根据动态生成的另一个对象的属性计算一个对象的属性值的总和
Calculate sum of values of an object's properties based on another object's properties generated dynamically
我想根据动态生成的另一个对象的属性计算一个对象的属性值的总和。这个新对象是根据用户交互生成的。例如,我有一个具有以下属性的对象:
var valueStore = [
{ item1Price: 4.5,
item2price: 6.5,
item3price: 6.9,
itemCategory: 'inventory'
},
{ item1Price: 4.5,
item2price: 6.5,
itemCategory:'common'
}
];
用户选择的对象是:
var selectedStore = [
{
selectedItems: [ item1Price, item2price ],
itemCategory: 'inventory'
},
{
selectedItems: [ item1Price, item2price ],
itemCategory: 'common'
}
];
我想要 selectedStore
对象的总价。
这不是很优化的解决方案。
var sum = 0;
valueStore.forEach(function (store) {
selectedStore.forEach(function (selected) {
if (selected.itemCategory === store.itemCategory) {
var keys = Object.keys(store);
selected.selectedItems.forEach(function (item) {
if (keys.indexOf(item) > -1) sum += store[item];
});
}
});
});
console.log(sum);
编辑:同样在 selectedStore 中,您的 selectedItems 需要是字符串值selectedItems: ['item1Price', 'item2price']
我想根据动态生成的另一个对象的属性计算一个对象的属性值的总和。这个新对象是根据用户交互生成的。例如,我有一个具有以下属性的对象:
var valueStore = [
{ item1Price: 4.5,
item2price: 6.5,
item3price: 6.9,
itemCategory: 'inventory'
},
{ item1Price: 4.5,
item2price: 6.5,
itemCategory:'common'
}
];
用户选择的对象是:
var selectedStore = [
{
selectedItems: [ item1Price, item2price ],
itemCategory: 'inventory'
},
{
selectedItems: [ item1Price, item2price ],
itemCategory: 'common'
}
];
我想要 selectedStore
对象的总价。
这不是很优化的解决方案。
var sum = 0;
valueStore.forEach(function (store) {
selectedStore.forEach(function (selected) {
if (selected.itemCategory === store.itemCategory) {
var keys = Object.keys(store);
selected.selectedItems.forEach(function (item) {
if (keys.indexOf(item) > -1) sum += store[item];
});
}
});
});
console.log(sum);
编辑:同样在 selectedStore 中,您的 selectedItems 需要是字符串值selectedItems: ['item1Price', 'item2price']