Open In App

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

Last Updated : 06 Feb, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

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.

Javascript




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).

Javascript




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' ] }



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads