Open In App

How to Add Duplicate Object Key with Different Value to Another Object in an Array in JavaScript ?

Adding duplicate object keys with different values to another object in an array in JavaScript refers to aggregating values under the same key from multiple objects in an array, creating a new object where each key corresponds to an array of associated values.

Using for…of Loop

For…of loop in JavaScript, is used to iterate over an array of objects. For each object, check and accumulate values under the same key in another object, effectively grouping values by key.

Syntax:

for ( variable of iterableObjectName) {
// code block to be executed
}

Example: In this example we are using uses a for…of loop and a ternary operator to iterate through an array of objects (myArray). It creates a new object (resultObj) by aggregating values under duplicate keys.






const myArray = [
  { key: "id", value: 1 },
  { key: "name", value: "Amit" },
  { key: "id", value: 2 },
  { key: "name", value: "Kohli" },
];
 
const resultObj = {};
 
for (const obj of myArray) {
  resultObj[obj.key]
    ? resultObj[obj.key].push(obj.value)
    : (resultObj[obj.key] = [obj.value]);
}
 
console.log(resultObj);

Output
{ id: [ 1, 2 ], name: [ 'Amit', 'Kohli' ] }

Using reduce()

Reduce() method is used to iterate through an array of objects. It accumulate values under duplicate keys into a new object. If a key already exists, append the value; otherwise, create a new key-value pair.

Syntax:

array.reduce( function(total, currentValue, currentIndex, arr), 
initialValue )

Example: In this example we are using reduce() method to iterate through an array of objects (myArray). It accumulates values under duplicate keys, creating a new object (resultObj).




const myArray = [
  { key: "id", value: 1 },
  { key: "name", value: "Bhavna" },
  { key: "id", value: 2 },
  { key: "name", value: "Sharma" },
];
 
const resultObj = myArray.reduce((acc, obj) => {
  acc[obj.key] ? acc[obj.key].push(obj.value) : (acc[obj.key] = [obj.value]);
  return acc;
}, {});
 
console.log(resultObj);

Output
{ id: [ 1, 2 ], name: [ 'Bhavna', 'Sharma' ] }


Article Tags :