【发布时间】:2016-02-26 14:22:21
【问题描述】:
我有以下几点:
var owners = [{
"ownerid": "11",
"name": "jane",
"sex": "female"
}, {
"ownerid": "22",
"name": "mike",
"sex": "male"
}, {
"ownerid": "33",
"name": "alex",
"sex": "male"
}];
var cars = [{
"ownerid": "11",
"make": "ford",
"model": "mustang"
}, {
"ownerid": "11",
"make": "honda",
"model": "civic"
}, {
"ownerid": "33",
"make": "toyota",
"model": "corolla"
}];
我想结束这个
var mergedandfiltered = [{
"name": "jane",
"sex": "female",
"make": "ford",
"model": "mustang"
}, {
"name": "jane",
"sex": "female",
"make": "honda",
"model": "civic"
}, {
"name": "alex",
"sex": "male",
"make": "toyota",
"model": "corolla"
}];
我们的想法是合并和过滤结果,这样我就有了车主、车主财产以及他们拥有的汽车和汽车财产的列表。迈克没有任何汽车,因此没有显示在结果中。 “ownerid”是通用链接,但我不需要它显示在结果中。
请首选纯 JS 解决方案!
【问题讨论】:
-
欢迎来到 Stack Overflow!请拿起tour,环顾四周,并通读help center,尤其是How do I ask a good question? 和What types of questions should I avoid asking? 你在哪里卡住了? SO 的文化是您至少应该尝试一下,然后如果您在这样做时遇到问题,请展示尝试并描述问题。
-
基本上,您需要做的就是遍历
cars并在所有者中找到与ownerid匹配的条目,然后构建新对象。看看MDN 和所有可用的数组函数,你应该可以做到。map函数可能是一个很好的起点,因为您将一个数组(cars)映射到一个新数组。然后还要查看find以查找owners中的元素。将所有者转换为以 id 为键的字典可能更有效。
标签: javascript arrays filter merge