簡體   English   中英

檢查數組中的匹配鍵,如果找到,則取第二個數組條目,如果在 javascript 中不取第一個數組條目

[英]Check for matching key in array, if found take 2nd array entries if not take 1st array entries in javascript

我有 2 個陣列 object

1.

itemMapping = {
    id:1,
    hierarchyDesc:"Men's casual",
    style:"Denim Pants",
    styleDesc:"VS pants",
    color:"blue"
}
mapData = {
    hierarchyDesc:"Women's casual",
    style:"Cotton Pants",
    styleDesc:"pants"
}

我需要將每個 itemMapping 的鍵與每個 mapData 的鍵進行比較,並形成一個 newArray,如果有任何鍵匹配,(例如:在 itemMapping 和 mapData 中-hierarchyDesc、style、styleDesc 兩者都存在)然后從這些匹配的對象條目中獲取mapData 數組並推送到 newArray,如果它不匹配並且僅在 itemMapping 數組中,則從 itemMapping 數組中取出那些不匹配的 object 條目並推送到 newArray。

注意:mapData 的所有 object 鍵都將出現在 itemMapping 中,反之亦然。

預期結果:

newArray = {
    id:1,
    hierarchyDesc:"Women's casual",
    style:"Cotton Pants",
    styleDesc:"pants",
    color:"blue"
}

如何在 Javascript 中實現它?

您可以使用 ES6 擴展運算符const res = {...itemMapping, ...mapData }

見下文

 const itemMapping = { id:1, hierarchyDesc:"Men's casual", style:"Denim Pants", styleDesc:"VS pants", color:"blue" }, mapData = { hierarchyDesc:"Women's casual", style:"Cotton Pants", styleDesc:"pants" }; const res = {...itemMapping, ...mapData } console.log(res);

You can use map over the keys of the itemMapping object and use Object.fromEntries to convert the array of key-value pairs to an object.

 const itemMapping = { id:1, hierarchyDesc:"Men's casual", style:"Denim Pants", styleDesc:"VS pants", color:"blue" }, mapData = { hierarchyDesc:"Women's casual", style:"Cotton Pants", styleDesc:"pants" }; const res = Object.fromEntries(Object.keys(itemMapping).map(k => [k, k in mapData? mapData[k]: itemMapping[k]])); console.log(res);

你可以嘗試類似的東西。

const newValues = {};
for (const item in itemMapping) {
    if(mapData[item]){
        newValues[item] = mapData[item]
    } else {
        newValues[item] = itemMapping[item]
    }
}

所需的鍵值被添加到 newValues object (不是數組)

上述方法的替代方法是在itemMapping中的鍵上使用數組 reduce。 請注意,我還會考慮將newArray重命名為其他名稱,因為它是 object 而不是數組。

 const itemMapping = { id: 1, hierarchyDesc: "Men's casual", style: "Denim Pants", styleDesc: "VS pants", color: "blue" }; const mapData = { hierarchyDesc: "Women's casual", style: "Cotton Pants", styleDesc: "pants" }; const newArray = Object.keys(itemMapping).reduce((acc, key) => { acc[key] = key in mapData? mapData[key]: itemMapping[key]; return acc; }, {}); console.log(newArray)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM