我有以下几点:如何在Javascript中合并和过滤两个对象数组?
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!请[参观],环顾四周,并通读[帮助],特别是[*我如何提出一个好问题?](/帮助/如何问)和[*什么类型的我应该避免提问?*](/ help/dont-ask)你卡在哪里?在SO上的文化是,你至少应该尝试一下,然后如果遇到这样的问题,请展示尝试并描述问题。 –
基本上,你需要做的就是循环'cars'并在所有者中找到与'ownerid'匹配的条目,然后构建新的对象。看看[MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)以及阵列的所有可用函数,你应该可以做到这一点。由于您将一个数组(“汽车”)映射到一个新数组,所以'map'函数可能是一个很好的开始。然后再看'find'查找'owners'中的元素。将所有者转换为以id为单位的字典可能更有效。 –