合并两个数组,每个数组包含一些字段 [英] merge two arrays including some fields from each
本文介绍了合并两个数组,每个数组包含一些字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用map函数合并两个数组,这个想法是创建一个新数组,其中某些字段取自第一个数组,某些字段取自第二个数组. 条件是名称字段.
I want to merge two arrays using map function, the idea is to create a new array with some fields taken from first array and some fields from the second one. The condition is the field name.
这是列表A:
[
{"name": "tom", "id": "1", "date": "1654"},
{"name": "jack", "id": "2", "date": "6544"},
{"name": "sarah", "id": "3", "date": "987"},
{"name": "william", "id": "4", "date": "654"},
{"name": "ronaldo", "id": "5", "date": "12345"}
]
这是列表B:
[
{"name": "tom", "age": "20", "school": "A", "password": "abcd"},
{"name": "jack", "age": "25", "school": "B", "password": "1234"}
]
因此,它应该返回合并的版本,但只包括一些选定的字段:
as a result, it should return a merged version, but only some selected fields included:
[
{"name": "tom", "age": "20", "school": "A", "exists": true, , "date": "1654"},
{"name": "jack", "age": "25", "school": "B", "exists": true, "date": "6544"},
{"name": "sarah", "age": "", "school": "", "exists": false, "date": "987"},
{"name": "william", "age": "", "school": "", "exists": false, "date": "654"},
{"name": "ronaldo", "age": "", "school": "", "exists": false, "date": "12345"}
]
这是我尝试使用map合并这两个数组的方法,但不是很成功.有人可以帮我实现这一目标吗?
Here is my attempt to merge these two arrays, using map, but not very successful. Could somebody help me to achieve this?
const alldata = listA.map(u => listB.filter(oo => u.name === oo.name));
推荐答案
您非常亲密.试试这个:
You are very close. Try this:
let arrA = [
{"name": "tom", "id": "1", "date": "1654"},
{"name": "jack", "id": "2", "date": "6544"},
{"name": "sarah", "id": "3", "date": "987"},
{"name": "william", "id": "4", "date": "654"},
{"name": "ronaldo", "id": "5", "date": "12345"}
];
let arrB = [
{"name": "tom", "age": "20", "school": "A", "password": "abcd"},
{"name": "jack", "age": "25", "school": "B", "password": "1234"}
];
let result = arrA.map(v => {
let fr = arrB.filter(f => v.name == f.name ) ;
let e = fr.length ? true : false;
fr = fr.length ? fr[0] : {age: "", school: "", password: "" };
//Construct the format you want on the final array
return {
name: v.name,
age: fr.age,
school: fr.school,
exists: e,
date: v.date
}
});
console.log( result );
这篇关于合并两个数组,每个数组包含一些字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文