仍然是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)切割最后一个索引,但是在其余的工作完成之前,我无法判断它是否正常工作。
答案 0 :(得分:2)
不确定您的错误,但在循环结束后您应该拥有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;
&#13;
更好地重用命名函数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;
&#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?