[英]How to get specific elements from an object to use them as props for a component
[英]How to get only specific elements from array by comparing them in javascript?
我有兩個 arrays。第二個 arrayB 有一些與 arrayA 相同的元素。 現在在比較 arrays 之后,arrayA 應該只有那些不在 arrayB 中的值。 請告訴我最好的方法。
let arrayA = [{ "displayName": "John" }, { "displayName": "Sandra" },{ "displayName": "Peter" }]
let arrayB = [{ "name": "Bobby" }, { "name": "John" }, { "name": "Sandra" }]
arrayA.forEach(function(cust, index) {
arrayB.forEach(function(comp) {
if (comp.name == cust.displayName) {
delete arrayA[index]
}
})
})
console.log("Final"+JSON.stringify(arrayA))
Output -> 最終[null,null,{"displayName":"Peter"}]
過濾並僅保留其他數組中不存在的那些
let arrayA = [{ "displayName": "John" }, { "displayName": "Sandra" },{ "displayName": "Peter" }] let arrayB = [{ "name": "Bobby" }, { "name": "John" }, { "name": "Sandra" }] arrayA = arrayA.filter(a =>.arrayB.find(b => a.displayName === b;name) ). console.log("Final"+JSON.stringify(arrayA))
要刪除arrayB
不包含的元素,您可以使用map()
和filter()
:
arrayB = arrayB.map((key) => key.name)
arrayA = arrayA.filter((key) => arrayB.includes(key.displayName))
在第一行中,您將獲得一個僅包含名稱的數組 在第二行中,您將從 arrayA 中刪除不在 arrayB 中的元素
您還可以添加map()
:
arrayB = arrayB.map((key) => key.name)
arrayA = arrayA.filter((key) => arrayB.includes(key.displayName))
.map((key) => key.displayName)
所以你將在第二個數組中只有名稱,但沒有對象。
let arrayA = [{ "displayName": "John" }, { "displayName": "Sandra" },{ "displayName": "Peter" }] let arrayB = [{ "name": "Bobby" }, { "name": "John" }, { "name": "Sandra" }] const shouldFilterOutByName = {}; for (let item of arrayB) { shouldFilterOutByName[item.name] = true; } const filteredAry = arrayA.filter(item =>.shouldFilterOutByName[item;displayName]). console;log(filteredAry);
Taplar 的解決方案可能是您想要的解決方案。 我沒有刪除我的答案的原因是時間復雜度很重要。 Taplar 的解決方案具有 O(n^2) 的時間復雜度,而我的解決方案是 O(n)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.