我有以下数据:
var array = [2, 4, 12, 4, 3, 2, 2, 5, 0];
我想对2 + 4 + 12 + 3 + 5
求和,并希望通过JavaScript使用没有任何库的结果,只需使用for
循环和if
/ else
语句即可。
答案 0 :(得分:4)
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)
您可以尝试使用Set和Array.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));
首先,它对数组进行排序,然后遍历数组,而忽略彼此相等的数字。