javascript - 如何将索引为 0 的重复数组合并为一个数组 javascript

标签 javascript arrays duplicates array-merge

我有一个数组数组,日期在索引 0 处。我很想检查 love 循环遍历数组以及与另一个匹配的任何日期,应该合并值。

这是数组的样子,也是我尝试过的..

var array = [
  [
    Date 2019-06-11T10:00:00.000Z,
    0,
    0,
    0,
    23
  ],
  [
    Date 019-06-11T10:00:00.000Z,
    0,
    0,
    2,
    0
  ],
  [
   Date 2019-16-11T12:00:00.000Z,
    0,
    56,
    0,
    0
  ],
  [
    Date 2019-16-11T12:00:00.000Z,
    3,
    0,
    0,
    0
  ]
]

var result = array.filter(function(v) {
  return this[v[0]] ?
    !Object.assign(this[v[0]], v) :
    (this[v[0]] = v)
}, []);
console.log(result);

我希望输出是这样的,但该方法似乎删除了重复项。

var array = [[
  Date  2019-06-11T10:00:00.000Z,
    0,
    0,
    2,
    23
  ],[
   Date 2019-16-11T12:00:00.000Z,
    3,
    56,
    0,
    0
  ]]

an image of what the data looks like on the browser console

最佳答案

您可以使用 findIndex 检查累加器是否已经有新数组的 0 索引,如果有则合并数组:

const arr = [['2019-06-11T10:00:00.000Z', 0, 0, 0, 23], ['2019-06-11T10:00:00.000Z', 0, 0, 2, 0], ['2019-16-11T12:00:00.000Z', 0, 56, 0, 0], ['2019-16-11T12:00:00.000Z', 3, 0, 0, 0]]

const sorted = arr.reduce((acc, a) => {
  const index = acc.findIndex(b => a[0] === b[0])
  index > -1 ? acc[index] = acc[index].map((b, i) => i ? b + a[i]: b) : acc.push(a)
  return acc
}, [])

console.log(sorted)

关于javascript - 如何将索引为 0 的重复数组合并为一个数组 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57035054/

相关文章:

java - 将 ArrayList 中的元素添加到一起

javascript - 完全禁用元素,包括在单击操作时调用其他 JavaScript 函数的链接

javascript - CHMOD 更改会影响加载到页面的数据吗?

javascript - 选择具有类名的第一个可见元素

c++ - 按字母顺序排列字符串数组(甚至 *ptr)

php - 如何查找数据库中的重复项?

javascript - OBJ 文件未出现在浏览器 WebGL Three.js 中

php - 如何按保留键的姓氏对名称数组进行排序

php - 'ON DUPLICATE KEY UPDATE' 所需的正确语法,SET 选项

r - 使用 as.data.frame() 在 R 中复制行名称