对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/