下面给出的代码是我尝试使用箭头函数修改数组的代码,但是在运行时,它返回undefined的值,因为输出可以有人提出建议
var modifyArray = (nums) => {
return nums.forEach(function (element) {
(element % 2 == 0) ? element *= 2 : element *= 3;
})
}
console.log(modifyArray([1,2,3,4,5]));
答案 0 :(得分:3)
.forEach
返回未定义。您可能想.map
到一个新数组并返回:
return nums.map(function (element) {
return (element % 2 == 0) ? element *= 2 : element *= 3;
});
确保您还必须在内部函数内返回该语句,否则该结果也将为未定义。
答案 1 :(得分:0)
forEach
不返回任何内容-改用map
:
var modifyArray = nums => nums.map(element => element % 2 == 0 ? element *= 2 : element *= 3)
console.log(modifyArray([1,2,3,4,5]));
还请注意,传递给forEach
的函数内部没有返回任何内容-使用ES5 function
时,您需要显式return
-ES6 =>
不需要
答案 2 :(得分:0)
请参阅上面的答案。
如果您仍然想使用forEach
let result = []
var modifyArray = (nums) => {
nums.forEach(function (element) {
result.push((element % 2 == 0) ? element *= 2 : element *= 3);
})
return result;
}
modifyArray([1,2,3,4,5])
console.log(result)
答案 3 :(得分:0)
使用for循环怎么样?
var modifyArray = (nums) => {
for (let i = 0; i < nums.length; i++) {
let element = nums[i];
// console.log(element + ' - ' + element % 2 );
nums[i] = (element % 2 == 0) ? element *= 2 : element *= 3;
}
return nums;
}
console.log(modifyArray([1,2,3,4,5]));
答案 4 :(得分:0)
对于每个返回未定义的返回值,因为它不返回任何内容,但是您可以使用forEach通过将数据推入数组来执行相同的操作。注意,我没有改变您的方法,只是扩展了它
var modifyArray = (nums) => {
var somearray = []
nums.forEach((element) => somearray.push((element % 2 == 0) ? element *= 2 : element *= 3));
return somearray;
}
console.log(modifyArray([1, 2, 3, 4, 5]));
使用array.push
将数据推入数组。如果要使用map方法,也可以使用
var modifyArray = (nums) => {
return nums.map((element) => { return (element % 2 == 0) ? element *= 2 : element *= 3 });
}
console.log(modifyArray([1,2,3,4,5]));
要用于循环吗?然后,您也可以尝试这种方法。和forEach循环一样
var modifyArray = (nums) => {
var somearray = [];
for (let i = 0; i < nums.length; i++) {
somearray.push((nums[i] % 2 == 0) ? nums[i] *= 2 : nums[i] *= 3)
}
return somearray;
}
console.log(modifyArray([1, 2, 3, 4, 5]));