"even last"数组脚本练习



对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)对最后一个索引进行切片,但在剩下的部分工作之前,我不知道这是否有效。

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

最后,我将使用.reduce()来求和偶数索引。

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;


Nicer可重用命名函数IMO.

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;

以下是我的操作方法:

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
}

请尝试此代码:

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链接:https://jsfiddle.net/Dee0565/ggb8919a/

最新更新