我正在尝试从现有阵列创建一个新阵列。条件是,如果元素重复,则将这些元素相加。请参阅以下示例以获取详细信息,因为我可能无法清楚解释:

输入:

var arrayA = ["2", "1", "4", "2", "5", "1", "3", "2"];

输出:
var arrayB = ["6", "2", "4", "5", "3"];

此处arrayB [0] = 2s(2 + 2 + 2)的总和,arrayB [1] = 1s(1 + 1)的总和

我做了很多尝试,但无法弄清楚该如何实现。

请帮忙!

最佳答案

你可以这样

 arrayA = ["2", "1", "4", "2", "5", "1", "3", "2"];
 //make a set
 var set =  new Set(arrayA);
 var arrayB = [];
 set.forEach(function(a) {
   //for each set find in the original arrayA
   var len = arrayA.filter(function(f) {
     return f == a;
   });
   //push in arrayB set element * number of it occurance in original array
   arrayB.push((+a) * (len.length));
 })
 console.log(arrayB)

09-07 19:08