如何对数组中的第二个数字求和?

时间:2018-10-09 17:13:34

标签: javascript arrays

我在汇总Javascript数组中的每个第二个/其他数字时遇到麻烦。有什么建议么? (使用挪威语功能,对此表示抱歉!) 例如:2、4、6、8、10 = 30 ..

我第二个/其他号码的功能是

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;
}

以及最终金额:

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

3 个答案:

答案 0 :(得分:4)

我能看到的最简单的方法是使用reduce(很适合求和),而只是不添加不想对总和贡献的索引值:

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);

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);

答案 1 :(得分:4)

尝试以下操作:

$(function() {
  let progressbar = $("#progressbar"),
    progressLabel = $("#progress-label");
  let progressbar2 = $("#progressbar2"),
    progressLabel2 = $("#progress-label2");

  function checkValue(obj) {
    var val = obj.progressbar("value") || 0;
    var bar = $(".ui-progressbar-value", obj);
    switch (true) {
      case (val <= 25):
        bar.css('background', 'LightGreen');
        break;
      case (val > 25 && val <= 50):
        bar.css('background', 'Yellow');
        break;
      case (val > 50 && val <= 75):
        bar.css('background', 'Orange');
        break;
      case (val > 75):
        bar.css('background', 'Red');
        break;
    }
  }

  function makeBar(obj) {
    obj.progressbar({
      value: 0,
      change: function(e, ui) {
        $(".label", this).text($(this).progressbar("value") + "% Complete!");
        checkValue($(this));
      }
    });
  }

  makeBar($("#progressbar"));
  makeBar($("#progressbar2"));

  function progress() {
    let val = progressbar.progressbar("value") || 0;
    let val2 = progressbar2.progressbar("value") || 0;
    if (val < 50) {
      progressbar.progressbar("value", val + 1);
    }
    if (val2 < 85) {
      progressbar2.progressbar("value", val2 + 1);
    }
    setTimeout(progress, 20);
  }
  setTimeout(progress, 500);
  // setTimeout(progress2, 500);
});

您无需将所有数字都循环,而是将i加2从而仅循环奇数。

答案 2 :(得分:3)

Array.prototype.reduce当然是前往这里的方式:

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);