Open In App

JavaScript – Match Values from Another Array and Assign to Object of Arrays

Last Updated : 15 Jan, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

Here are the different methods to match values from another array and assign to object of arrays in JavaScript

1. Using forEach() and push()

In this method, we will be using the forEach() and push() methods of the array to get the same value from another array and assign it to the object of arrays.


a1.forEach(val =>
	a2.includes(val) && res.push(val));
console.log(res);


Output
[ 1, 2, 4, 453 ]

In this example

  • The code compares two arrays and finds common elements.
  • It uses forEach to iterate through a1, checks if each value exists in a2 using includes, and adds the common values to the res array.

2. Using filter() and push()

In this method, we will use the filter(), push(), and includes() of array to get the same value from another array and assign it to the object of arrays.


let res = a1.filter(
	val => a2.includes(val));
console.log(res);


Output
[ 1, 2, 4, 453 ]

In this example

  • The code finds common elements between two arrays (a1 and a2) using the filter method.
  • It filters a1 by checking if each element exists in a2 using includes, and stores the result in res.

3. Using map() with find()

This method combines Array.prototype.map and Array.prototype.find for a cleaner and more functional approach.


const user = users.map(user => {
	const data = ages.find(age => age.id === user.id);
	return { ...user, age: data?.age };
});


Output
[ { id: 1, name: 'Alia', age: 25 }, { id: 2, name: 'Riya', age: 30 } ]

In this example

  • The code merges two arrays (users and ages) by matching the id property, using map and find to add the age property from ages to each user object.

4. Using reduce() for a Lookup Table

For large datasets, using the reduce() method to build a lookup table can significantly improve performance by streamlining the key-matching process.


const age = ages.reduce((acc, age) => {
	acc[age.id] = age.age;
	return acc;
}, {});

users.forEach(user => {
	user.age = age[user.id];
});


Output
[
  { id: 1, name: 'Alia', age: 25 },
  { id: 2, name: 'Bobby', age: 30 },
  { id: 3, name: 'Charu', age: 35 }
]

In this example

  • The ages array is transformed into an object mapping id to age.
  • The forEach loop adds the corresponding age to each user based on their id.
  • The users array is updated with the age property for each user.

5. Using Object.fromEntries() for Optimized Mapping

For a concise and modern approach, convert the ages array into an object map using Object.fromEntries.


const age = Object.fromEntries(ages.map(age =>
	[age.id, age.age]));
const user = users.map(user => ({
	...user,
	age: ageMap[user.id],
}));

In this example

  • The ages array is transformed into an object ageMap that maps id to age using Object.fromEntries().
  • The users array is updated by adding an age property from ageMap based on each user’s id, resulting in the user array with both name and age properties.


Next Article

Similar Reads