[英]1st word 1st character 2nd word 2nd character and on till the end of array
[英]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.