检查数组中的匹配键,如果找到,则获取第二个数组条目,如果没有获取javascript中的第一个数组条目



Im有2个数组对象

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阵列中获取那些不匹配的对象条目并推送到newArray。

注意:mapData的所有对象键都将出现在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);

您可以在itemMapping对象的键上使用map,并使用Object.fromEntries将键值对数组转换为对象。

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对象(而不是数组(

上述方法的替代方法是对itemMapping中的键使用数组reduce。注意,我也会考虑将newArray重命名为其他对象,因为它是一个对象而不是数组。

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)

最新更新