给定一个整数序列,return 具有偶数索引的所有整数的总和乘以最后一个索引处的整数
Given a sequence of integers, return the sum of all the integers that have an even index, multiplied by the integer at the last index
这是我的解决方案,它通过了一些测试,但不是全部。谁能帮我解释一下为什么?谢谢:)
function evenLast(numbers) {
let sum = 0;
let lastNum = numbers.pop();
let arr = numbers.filter(el => el % 2 === 0);
for(let i = 0; i < arr.length; i++) {
sum += (arr[i] * lastNum);
}
return sum;
}
您需要检查索引,而不是值
let arr = numbers.filter((_, i) => i % 2 === 0);
你可以在最后一步乘以总和。
for (let i = 0; i < arr.length; i++) {
sum += arr[i]);
}
return sum * lastNum;
更好的方法只需要一个循环,并通过以两个为增量对值求和。
function evenLast(numbers) {
let sum = 0;
for (let i = 0; i < numbers.length; i += 2) sum += numbers[i];
return sum * numbers[numbers.length - 1];
}
function evenLast(arr) {
var lastarr = arr.slice(arr.length-1)
//return lastarr;
let newarr = [];
for(i=0; i<arr.length; i++){
if(arr[i] % 2 === 0) {
newarr.push(arr[i]);
}
}
//return newarr;
var sum1 =0;
for(i=0; i<newarr.length; i++) {
var sum = newarr[0] * lastarr[0];
var sum1 = newarr[1] * lastarr[0];
//return sum;
var sum2 = sum1 + sum;
//i++;
}
return sum2;
}
console.log(evenLast([2, 3, 4, 5]))
这是我的解决方案,它通过了一些测试,但不是全部。谁能帮我解释一下为什么?谢谢:)
function evenLast(numbers) {
let sum = 0;
let lastNum = numbers.pop();
let arr = numbers.filter(el => el % 2 === 0);
for(let i = 0; i < arr.length; i++) {
sum += (arr[i] * lastNum);
}
return sum;
}
您需要检查索引,而不是值
let arr = numbers.filter((_, i) => i % 2 === 0);
你可以在最后一步乘以总和。
for (let i = 0; i < arr.length; i++) {
sum += arr[i]);
}
return sum * lastNum;
更好的方法只需要一个循环,并通过以两个为增量对值求和。
function evenLast(numbers) {
let sum = 0;
for (let i = 0; i < numbers.length; i += 2) sum += numbers[i];
return sum * numbers[numbers.length - 1];
}
function evenLast(arr) {
var lastarr = arr.slice(arr.length-1)
//return lastarr;
let newarr = [];
for(i=0; i<arr.length; i++){
if(arr[i] % 2 === 0) {
newarr.push(arr[i]);
}
}
//return newarr;
var sum1 =0;
for(i=0; i<newarr.length; i++) {
var sum = newarr[0] * lastarr[0];
var sum1 = newarr[1] * lastarr[0];
//return sum;
var sum2 = sum1 + sum;
//i++;
}
return sum2;
}
console.log(evenLast([2, 3, 4, 5]))