【问题标题】:Sum up specific Objects of Array [closed]总结数组的特定对象[关闭]
【发布时间】:2018-08-20 00:39:02
【问题描述】:

我有一个这样的数组

var array = [
{occurrences: 1, position: "1"},
{occurrences: 4, position: "2"},
{occurrences: 1, position: "1"},
{occurrences: 2, position: "3"},
];

我想这样总结:

{occurrences: 2, position: "1"},
{occurrences: 4, position: "2"},
{occurrences: 2, position: "3"}

我可以通过使用 lodash 或其他任何东西来实现这一点吗?

【问题讨论】:

  • 是的,你可以。

标签: javascript lodash


【解决方案1】:

不需要 Lodash,就像在 this answer 中一样,你需要遍历你的数组并构造一个新的结果数组:

var result = [];
var array = [{
    occurrences: 1,
    position: "1"
  },
  {
    occurrences: 4,
    position: "2"
  },
  {
    occurrences: 1,
    position: "1"
  },
  {
    occurrences: 2,
    position: "3"
  },
];

array.reduce(function(res, value) {
  if (!res[value.position]) {
    res[value.position] = {
      occurrences: 0,
      position: value.position
    };
    result.push(res[value.position])
  }
  res[value.position].occurrences += value.occurrences
  return res;
}, {});

console.log(result);
/*
Will print:

[
  {
    "occurrences": 2,
    "position": "1"
  },
  {
    "occurrences": 4,
    "position": "2"
  },
  {
    "occurrences": 2,
    "position": "3"
  }
]

*/

【讨论】:

  • 非常感谢,我后来也有同样的想法,但你把它写下来更快:)
猜你喜欢
  • 1970-01-01
  • 2018-02-14
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 2019-12-27
  • 2013-01-07
  • 2019-07-13
相关资源
最近更新 更多