9

I have an array as such

const arr = [a={} , b={}]

Now I know the spread operator is not for mutation or pushing but it is very easy to do so with.

I want this button to add elements to a when it's pressed

 <Button
title= {this.props.title}
 onPress={ this.roomNumberPressed }
 />

so the end results be something like :

arr = [a={1,2,3} , b={3,4,5}]
3
  • 2
    Note: ... isn't, and can't be, an operator, neither when used for spread nor rest. It does things operators cannot do. Details. Commented Sep 17, 2018 at 8:22
  • 2
    const arr = [a={} , b={}] isn't valid syntax. Do you have an array, or an object with a and b properties? Commented Sep 17, 2018 at 8:24
  • 2
    Perhaps you mean {a: [], b: []}? Commented Sep 17, 2018 at 8:26

1 Answer 1

17

I want this button to add elements to a when it's pressed

As you said in your question, spread notation isn't for adding to existing objects. Your options are:

  1. Use spread to create a new object and assign that new object to a:

    a = {...a, ...theNewPropertiesToAdd};
    
  2. Use Object.assign to add new properties to the existing a:

    Object.assign(a, theNewPropertiesToAdd);
    

Note I've just used a above because your const arr = [a={}, b={}] is a syntax error, and I can't tell whether you mean const arr = [{}, {}] (in which case a above is arr[0]), or const arr = {a: {}, b: {}} (in which case a above is arr.a [and arr isn't an array]).

Sign up to request clarification or add additional context in comments.

1 Comment

@Kuchi - You don't "append" things to variables. You assign them.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.