"甚至最后"数组javascript练习

时间:2015-11-20 04:39:47

标签: javascript arrays

仍然是javascript的新手,并试图提高我的技能。我需要访问数组的所有偶数索引然后将它们加在一起,最后将它们乘以数组中的最后一个数字。因此,例如[0,1,2,3,4,5]的答案应为30;

这就是我现在所拥有的。

   function evenLast() {
   a=[0,1,2,3,4,5];
   b=[];
   answer=0;
    for(i=0; i < a.length; i++) {
      if((a[i] % 2) === 0) {
        b.push(a[i]);
        answer= eval(b.join('+'));
      } 
    }
}

我一直在所有变量上得到未被捕获的引用错误,但我不确定原因。我知道我的循环应该正常工作。我已经尝试用(-0)切割最后一个索引,但是在其余的工作完成之前,我无法判断它是否正常工作。

3 个答案:

答案 0 :(得分:2)

不确定您的错误,但在循环结束后您应该拥有eval(尽管eval不是一个很好的方法)。

最终,我会使用.reduce()来对偶数索引求和。

&#13;
&#13;
var a=[0,1,2,3,4,5];

var answer = a.reduce(function(s, n, i) {
  return i % 2 ? s : (s + n);
}) * a[a.length-1];

document.body.innerHTML = answer;
&#13;
&#13;
&#13;

更好地重用命名函数IMO。

&#13;
&#13;
function sumEven(s, n, i) {
  return i % 2 ? s : (s + n);
}


var a=[0,1,2,3,4,5];

var answer = a.reduce(sumEven) * a[a.length-1];

document.body.innerHTML = answer;
&#13;
&#13;
&#13;

答案 1 :(得分:1)

我将如何做到这一点:

function evenLast() {
   var a=[0,1,2,3,4,5];
   var answer=0;
   for(var i=0; i < a.length; i+=2) answer += a[i]; // sum all even items
   answer *= a[a.length - 1]; // multiply by last item
   // answer is now 30
}

答案 2 :(得分:0)

请尝试以下代码:

var arr=[0,1,2,3,4,5],
    sum=0,
    last=arr[arr.length-1]; 

 $.each(arr,function(index,value){   
        if(index%2 == 0)
         sum+=value;
 }); 

alert(sum*last);

JsFiddle链接:What does if __name__ == "__main__": do?