gpt4 book ai didi

javascript - 如何比较两个具有不同属性名称的对象数组的值?

转载 作者:行者123 更新时间:2023-12-03 00:53:18 26 4
gpt4 key购买 nike

问题:我正在处理两个包含一些产品数据的对象数组。它们包含一些相同的数据(不是全部),但属性名称在两者之间不共享。以下是一些示例数据:

var productsOne = [
{ item: '1234', price: '2.00', quantity: '2' },
{ item: '5678', price: '7.19', quantity: '1' },
{ item: '2432', price: '3.59', quantity: '10' }
]

var productsTwo = [
{ itemNo: '2432', msrp: '3.59', inCart: '10' },
{ itemNo: '1234', msrp: '2.00', inCart: '2' },
{ itemNo: '5678', msrp: '7.19', inCart: '1' }
]

我需要比较这两个变量之间的值。 (例如,检查任何 productsOne 对象中的 item 值是否等于任何 productsTwo 中的 itemNo 值对象。)

我尝试过的:

我知道我需要使用 map() 方法或类似的方法,所以我从这里开始:

var itemNos = Array.prototype.map.call(productsTwo, function(obj) {
return obj.itemNo;
});

productsOne.map(function(obj) {
if (obj.item === itemNos) {
// do something
}
});

但是我正在努力使用map(),特别是检查存储在不同属性名称中的给定值。这是我应该采取的方法吗?

最佳答案

解决方案:

checking if the value of item in any productsOne object equals the value of itemNo in any productsTwo object.

productsOne.forEach((o) => {
if(productsTwo.some((o2) => o.item === o2.itemNo)) {
// `itemNo` value identical to `item` value found, do something
}
})

或者使用嵌套的forEachs:

productsOne.forEach((o) => {
productsTwo.forEach((o2) => {
if(o.item === o2.itemNo) {
// `itemNo` value identical to `item` value found, do something
console.log('o.item '+o.item+' is equal to '+o2.itemNo)
}
})
})

关于javascript - 如何比较两个具有不同属性名称的对象数组的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52954379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com