javascript - How to summize every second number in an Array? - Stack Overflow

I'm having trouble summize every secondother number in an Array in Javascript. Any suggestions? (

I'm having trouble summize every second/other number in an Array in Javascript. Any suggestions? (Using Norwegian functions, sorry for that!) Such as: 2, 4, 6, 8, 10 = 30..

My function for the second/other number is

function tall(nummer) {
var tall = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];

if (nummer == 5) {
    partall = tall.filter((_,i) => i&1);
        document.getElementById("tall").innerHTML = partall;
}

and for the final sum:

if (nummer == 9) {
    partall = tall.filter((_,i) => i&1);
    partall += tall;
        document.getElementById("tall").innerHTML = partall;
}

I'm having trouble summize every second/other number in an Array in Javascript. Any suggestions? (Using Norwegian functions, sorry for that!) Such as: 2, 4, 6, 8, 10 = 30..

My function for the second/other number is

function tall(nummer) {
var tall = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];

if (nummer == 5) {
    partall = tall.filter((_,i) => i&1);
        document.getElementById("tall").innerHTML = partall;
}

and for the final sum:

if (nummer == 9) {
    partall = tall.filter((_,i) => i&1);
    partall += tall;
        document.getElementById("tall").innerHTML = partall;
}
Share Improve this question asked Oct 9, 2018 at 17:13 ckheddackhedda 731 silver badge7 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 4

Try the following:

var tall = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
let sum = 0;

for (let i = 0; i < tall.length; i +=  2){
  sum += tall[i];
}

console.log(sum)

Instead of loop over all the number you increment i by 2 thus only looping over the odd numbers.

The simplest way I can see is to use reduce (good for summing) and just don't add in the values for the indexes you don't want to contribute to the sum:

const tall = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
const sum = tall.reduce((sum, val, i) => sum + (i & 1 ? val : 0), 0);
console.log(sum);

or

const tall = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
const sum = tall.reduce((sum, val, i) => (i & 1 ? sum + val : sum), 0);
console.log(sum);

Array.prototype.reduce is certainly the way to go here:

var sum = [0,1,2,3,4,5,6,7,8,9,10].reduce((sum, n, i) => {
    if (i % 2 === 0)
        sum += n;
    return sum;
}, 0);

console.log(sum);

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744736370a4590772.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信