javascript - 根据动态生成的另一个对象的属性计算对象属性值的总和

标签 javascript arrays object functional-programming javascript-objects

我想根据动态生成的另一个对象的属性来计算一个对象的属性值的总和。这个新对象是根据用户交互生成的。例如,我有一个具有以下属性的对象:

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']

关于javascript - 根据动态生成的另一个对象的属性计算对象属性值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34097542/

相关文章:

javascript - 如何使用 Meteor 构建可扩展的事件流或新闻源?

javascript - Bootstrap 模式中的 jQuery 验证不会触发

java - 获取学生评分测试成绩的平均值

ruby - 为什么 Ruby 为 "var = var + 1"而不是 "var = var + 0"创建一个新对象?

Javascriptexecutor 可以检测到吗?

javascript - ECMAScript/JavaScript 字符串中的每个字符消耗多少 RAM?

arrays - 在排序数组上应用函数

c - 使用 txt 文件输入过滤 C 中的数据列

javascript - 比较两个对象数组并删除第二个对象中具有相同属性值的项目

javascript - 为什么空 JavaScript 数组在条件结构中的计算结果为真?