【发布时间】:2018-02-18 15:28:23
【问题描述】:
我想使用 map 函数合并两个数组,想法是创建一个新数组,其中一些字段取自第一个数组,一些字段取自第二个数组。 条件是字段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"}
]
因此,它应该返回一个合并的版本,但只包含一些选定的字段:
[
{"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 合并这两个数组,但不是很成功。有人可以帮我实现这一目标吗?
const alldata = listA.map(u => listB.filter(oo => u.name === oo.name));
【问题讨论】:
-
你已经接近了。您只需要根据过滤器是真还是假,在映射函数中返回一个设置了真假的u。
标签: javascript arrays ecmascript-6