数组列表获取备用结果的总和



有没有一个函数如何轻松获得交替结果的总和:

这是我的简单原始列表:

let x = [1, 2 , 3 , 4 , 5 , 6 ,7];
expected result:
sum by first: 1 + 3 + 5 + 7 = 16
sum by second: 2 + 4 + 6 = 12
sum by third: 3 + 6 = 9

只想通过交替索引获得总和,任何建议/评论 TIA

你可以这样做:

let x = [1, 2 , 3 , 4 , 5 , 6 ,7];
function sumBy(firstelem){
var i = firstelem -1,
sum =0;
for(let k=i; k<x.length; k=k+2){
sum = sum + x[k];
}
return sum;
}
console.log(sumBy(1));
console.log(sumBy(2));
console.log(sumBy(3));

您可以为这些创建自己的自定义函数,如下所示:

const myList = [1, 2, 3, 4, 5, 6, 7];
let skipTake = (take, list) => {
let filtered = list.filter((a, i) => {
if (take == 1) {
return i % 2 == 0;
} else if (take == 2) {
return i != 0 && i % take == 1;
} else {
return i != 0 && (i + 1) % take == 0;
}
});
return filtered.reduce((agg, cur) => agg += cur);
}
console.log("first", skipTake(1, myList))
console.log("second", skipTake(2, myList))
console.log("third", skipTake(3, myList))
console.log("fourth", skipTake(4, myList))

一个简单的 for 循环就可以了

循环中的索引从 1 开始,直到长度 1,具体取决于您的特定要求。

let x = [1, 2, 3, 4, 5, 6, 7];
const index = 3; //for example
let sum = 0;
for (let i = 1; i < x.length + 1; i++)
sum += (i % index == 0) ? x[i - 1] : 0;
console.log(sum);

过滤和减少。

更改 if 语句以更改选择的索引。这将选择所有偶数索引。

let x = [1, 2 , 3 , 4 , 5 , 6 ,7];
let y = x.filter((element, index) => {
if (index % 2 == 0) {
return element;
}
}).reduce((a, b) => a + b);

最新更新