[英]Combine two arrays into one by matching elements using Javascript
我有兩個數組。 一個是從API獲取的,另一個是從firebase獲取的。 它們內部都有一個相似的密鑰,即tld。 如下所示。
API陣列
[
{
"tld" : "com",
"tld_type": 1,
},
"tld" : "org",
"tld_type" : 1,
}
]
Firebase陣列
[
{
"TLD" : "com",
"register_price" : 14.99
},
{
"TLD" : "org",
"register_price" : 15.99
}
]
我想將這兩個數組合並為一個並返回如下
[
{
"tld" : "com",
"tld_type" : 1,
"register_price" : 14.99
},
{
"tld" : "org",
"tld_type" : 1,
"register_price" : 15.99
}
]
我已經做了一些谷歌搜索,發現concact
但這似乎並沒有使用鍵來找到匹配項。 我該怎么做?
您可以使用map
並創建一個新對象,該對象的鍵和值將來自其他兩個數組,並返回該對象。 map
將創建一個新的對象數組
let api = [{ "tld": "com", "tld_type": 1, }, { "tld": "org", "tld_type": 1, } ] let fb = [{ "TLD": "com", "register_price": 14.99 }, { "TLD": "org", "register_price": 15.99 } ] let k = api.map(function(item, index) { let obj = {}; obj.tld = item.tld; obj['tld_type'] = item['tld_type']; obj['register_price'] = fb[index]['register_price'] return obj; }); console.log(k)
沒有解決此類問題的獨特方法。 如果Firebase數組中存在該屬性,則必須遍歷所有元素並添加register_price
屬性。 在最短的時間內:
let combined = apiArray.map(ele=>{
let machedElement = fbArray.find(e => e.TLD === ele.tld)
if(machedElement != undefined) ele.register_price = machedElement.register_price
return ele
})
如果要合並所有屬性,不僅要register_price:
let combined = apiArray.map(ele=>{
let machedElement = fbArray.find(e => e.TLD === ele.tld)
if(machedElement != undefined) {
let mergedObject = Object.assign(ele, machedElement)
return mergedObject
}else{
return ele
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.