映射来自两个长度不同的数组的数据并创建另一个数组 [英] Mapping data from two arrays which have different lengths and creating another array
问题描述
我有两个具有两个不同长度的数组. 例如:
I have two arrays which have two different lengths. For example:
var array1 = [{name: 'Yuri', age: 2, gender: 'Male'}, {name: 'Akit', age: 19, gender: 'Male'}, {name: 'Kean', age: 14, gender: 'Female'}, {name: 'Jan', age: 29, gender: 'Male'}, {name: 'Max', age: 25, gender: 'Male'}, {name: 'Suzy', age: 20, gender: 'Female'}];
var array2 = [{name: 'Jan', gender: 'Male', occupation: 'Designer'}, {name: 'Max', gender: 'Male', occupation: 'Developer'}, {name: 'Suzy', gender: 'Female', occupation: 'Tester'}];
array1
的长度是5,而array2
的长度是3.我想在两个数组上运行循环并匹配名称.如果名称匹配,那么我想从第二个数组中提取该特定对象.由于它们具有不同的长度,因此循环将在第一个数组长度处中断,而不会到达第二个数组的最后一个元素.我正在运行基于array2长度的for循环.请帮助我.
array1
's length is 5 and array2
's length is 3. I want to run a loop on both arrays and match the name. If the name matches then I want to extract the that particular object from 2nd array. As they have different lengths loop is breaking at the first array length and not reaching 2nd array's last element. I am running the for loop based on array2 length. Please help me with this.
预期结果: 两个数组的名称应匹配,并按如下所示创建另一个数组
Expected result: Name of both arrays should be matched and create another array as below
var array3 = [{name: 'Jan',age: 29, gender: 'Male', occupation: 'Designer'},
与其他对象相同"
推荐答案
var arr1 = [{name: 'Jan', age: 19}, {name: 'Suzy', age: 29}, {name: 'Peter', age: 39}, {name: 'Bart', age: 49}, {name: 'John', age: 59}];
var arr2 = [{name:'Kean', job: 'Technician'},{name:'Nick', job:'Mathematics'},{name: 'Jan', job: 'Tester'}, {name: 'Suzy', job:'Developer'}, {name: 'Peter', job: 'Scrum master'}];
result = arr1.map(x=> {
y = arr2.find(z=> x.name == z.name);
x.job = y ? y.job : undefined;
return x;
});
这篇关于映射来自两个长度不同的数组的数据并创建另一个数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!