如何求和一个数组的所有唯一数字?

时间:2018-09-15 12:52:18

标签: javascript arrays

我有以下数据:

var array = [2, 4, 12, 4, 3, 2, 2, 5, 0];

我想对2 + 4 + 12 + 3 + 5求和,并希望通过JavaScript使用没有任何库的结果,只需使用for循环和if / else语句即可。

4 个答案:

答案 0 :(得分:4)

您可以使用ES6 Sets.reduce()数组方法:

let array = [2, 4, 12, 4, 3, 2, 2, 5, 0];

let sum = [...new Set(array)].reduce((a, c) => (a + c), 0);

console.log(sum);

答案 1 :(得分:2)

您可以尝试使用SetArray.reduce

var array = [2,4,12,4,3,2,2,5,0];
let set = new Set();
let sum = array.reduce((a,c) => {
  if(!set.has(c)) {set.add(c); a += c; } 
  return a;
}, 0);
console.log(sum);

答案 2 :(得分:0)

const distinct = (array) =>
  array ? array.reduce((arr, item) => (arr.find(i => i === item) ? [...arr] : [...arr, item]), []) : array;
  

const sum = distinct([2,4,12,4,3,2,2,5,0]).reduce((a,b) => a + b);

console.log(sum);

答案 3 :(得分:0)

这是一个使用循环的简单解决方案:

const array = [2, 4, 12, 4, 3, 2, 2, 5, 0];

function sumNotCommon(array) {
    const sortedArray = array.slice().sort();
    let sum = 0;
    for (let i = 0; i < sortedArray.length; ++i) {
        if (i === 0 || sortedArray[i] !== sortedArray[i-1])
            sum += sortedArray[i];
    }
    return sum;
}

console.log(sumNotCommon(array));

首先,它对数组进行排序,然后遍历数组,而忽略彼此相等的数字。