在javascript中过滤2D数组,我尝试了所有方法

时间:2019-06-20 21:03:00

标签: javascript arrays filter duplicates

我有这样的二维数组:

[[ONE,1],[QUARTER,0.25],[QUARTER,0.25]]

我希望它成为:

[[ONE,1],[QUARTER,0.5]]

我尝试使用array.IndexOf但没有运气

ONE,1,QUARTER,0.25,QUARTER,0.25

2 个答案:

答案 0 :(得分:1)

与您的问题标题相反,您的示例建议您要 sum 而不是过滤器数组。

let arr = [['ONE', 1], ['QUARTER', 0.25], ['QUARTER', 0.25]];

let sums = arr.reduce((sums, item) => {
  let found = sums.find(([key]) => key === item[0]);
  if (found)
    found[1] += item[1];
  else
    sums.push(item);
  return sums;
}, []);

console.log(sums);

答案 1 :(得分:0)

您可以通过查看是否存在相同的键来简化数组。

var array = [['ONE', 1], ['QUARTER', 0.25], ['QUARTER', 0.25]],
    result = array.reduce((r, [key, value]) => {
        var temp = r.find(a => a[0] === key);
        if (temp) {
            temp[1] += value;
        } else {
            r.push([key, value]);
        }
        return r;
    }, []);

console.log(result);