我有以下幾點:如何在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爲單位的字典可能更有效。 –