【问题标题】:filtering a 2D array in javascript, i tried everything在javascript中过滤二维数组,我尝试了一切
【发布时间】:2019-11-03 17:43:07
【问题描述】:

我有这样的二维数组:

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

我希望它变成:

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

我尝试使用 array.IndexOf 但没有成功

ONE,1,QUARTER,0.25,QUARTER,0.25

【问题讨论】:

  • 发布您尝试过的内容。谁知道呢,你可能真的很接近答案了!
  • 您想要相同的数组还是新数组?

标签: javascript arrays filter duplicates


【解决方案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);

【讨论】:

  • 您好,您的代码在除我的程序之外的所有内容上都运行良好,所以我知道我在这里一定犯了一个错误,请您快速看一下,我尝试了所有方法,但找不到什么错误:github.com/Hasan-Alsulaiman/cash-register.git
【解决方案2】:

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

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-24
    • 2019-09-04
    • 1970-01-01
    • 2018-12-28
    • 2013-06-23
    • 2020-04-10
    • 2021-08-14
    相关资源
    最近更新 更多