简体   繁体   English

在javascript中过滤二维数组,我尝试了一切

[英]filtering a 2D array in javascript, i tried everything

I have 2D array like this :我有这样的二维数组:

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

I want it to become :我希望它变成:

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

I tried using array.IndexOf but no luck我尝试使用 array.IndexOf 但没有运气

ONE,1,QUARTER,0.25,QUARTER,0.25

Contrary to your question title, your example suggests you want sum , as opposed to filter, the array.与您的问题标题相反,您的示例表明您想要sum ,而不是 filter 数组。

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

You could reduce the array by looking if the same key exists.您可以通过查看是否存在相同的键来减少数组。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM