首页 > 解决方案 > JavaScript - 转换这个数据结构

问题描述

当我有这个数据结构的数组时:

[[3, 16, 1]
[3, 17, 1]
[3, 18, 1]
[3, 19, 1]
[3, 20, 1]
[3, 19, 1]
[3, 21, 1]
[3, 23, 1]
[3, 16, 1]
[3, 17, 1]
[2, 24, 1]
[2, 25, 1]
[2, 26, 1]
[2, 24, 1]]

我想计算数组元素并将其乘以数组的最后一个数字,如下所示:

[[3, 16, 2]
[3, 17, 2]
[3, 18, 1]
[3, 19, 2]
[3, 20, 1]
[3, 21, 1]
[3, 23, 1]
[2, 24, 2]
[2, 25, 1]
[2, 26, 1]]

我试图这样做:

array.forEach(function(x) { 
    
    counts[x] = (counts[x] || 0)+1; 
    
});

但这改变了数据结构,还有另一种形式吗?

标签: javascriptarraysmultidimensional-array

解决方案


您的代码的问题在于counts[x]. 您不能使用数组来索引对象。

您可以通过对数组进行字符串化来解决该问题。也就是说,使用:

counts[String(x)] = (counts[String(x)] || 0)+1; 

推荐阅读