How to dinamically add new key/value to all nested object inside other object?

Viewed 41

I have an object

var testArray = [name1:{xaxis:'xaxis1', yaxis:'yaxis1'}, 
                 name2:{xaxis:'xaxis2', yaxis:'yaxis2'}];

I have to add a new key / value paar, so it looks like this:

var myResult= [name1:{xaxis:'xaxis1', yaxis:'yaxis1', a:'b'}, 
                 name2:{xaxis:'xaxis2', yaxis:'yaxis2', a:'b'}];

I have tried:

testArray.map(function(e){
     e.a= b;
});

But it returns nothing

I have also tried this:

Object.fromEntries(Object.entries(testArray ).map((k, v) => k, v.map(('a') => 'b')));

But then I get an error Uncaught SyntaxError: Invalid destructuring assignment target

2 Answers
var testArray = {};
testArray["name1"] = {xaxis:'xaxis1', yaxis:'yaxis1'};
testArray["name2"] = {xaxis:'xaxis2', yaxis:'yaxis2'};

Now

Object.assign(testArray["name1"], {a:'b'});
Object.assign(testArray["name2"], {a:'b'});

Or

for (const [key, value] of Object.entries(testArray)) {
    Object.assign(testArray[key], {a:'b'});
}

You can use Object.entries method and loop through each object. Then, you can add the key values.

var testArray = {"name1" :{xaxis:'xaxis1', yaxis:'yaxis1'}, "name2":{xaxis:'xaxis2', yaxis:'yaxis2'}};

for (const [key, value] of Object.entries(testArray)) {
 testArray[key].a = "b"
}

console.log(testArray);

Related