我是一个发展世界的新手,请帮助我消除这个小小的疑问!在arrayName.map(匿名函数1)和arrayName.forEach(匿名函数2)中,匿名函数1返回值,但匿名函数2不能返回值。例如,请参阅下面的代码!
import React from "react"
import ReactDOM from "react-dom";
var numbers = [3, 56, 2, 48, 5];
console.log(numbers.map(function(number){
return number*number
}))
console.log(numbers.forEach(function(number){
return number*number
}))
在上面的代码中,.map()返回值,我们可以在日志中看到输出,但是与.forEach()不同的是,我们得到的唯一输出是“未定义的”.We可以使用下面的方法实现上面的输出
const numberSquare=[];
numbers.forEach(function(number){
numberSquare.push(number*number)
})
console.log(numberSquare);
是指在foreach()中声明的匿名函数不能返回值吗?
发布于 2020-07-18 05:50:31
因为您是新开发人员,所以可以查看有关forEach和map的MDN文档。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
这是完全不同的功能。
如您所见,forEach返回未定义的内容,所以这就是您所看到的日志。Map创建一个新数组,其中包含回调中返回的任何内容,这就是您在控制台中看到的。在匿名函数中在示例中返回的内容不会由forEach在外部console.log中返回。使用平方数字和forEach创建数组的第二个示例是正确的。但是,对于您想要的,我总是使用map,因为它完全可以满足您的需要。
如果您只想用console.log来计算forEach的平方数,您可以这样做:
numbers.forEach(function(number) { console.log(number * number); });
但是这不会创建数组,只会记录它们。保重!
发布于 2020-07-18 05:40:15
javascript中的forEach函数一般不返回值。它只是用作迭代器函数,就像for循环一样。如果需要值,就必须使用map、filter、find、findIndex,或者像在第二个示例中那样减少或使用它。
发布于 2020-07-18 05:44:54
在mdn文档中,forEach()
方法为每个数组元素执行一次提供的函数。
通常,它只是数组项的循环。
const array1 = ['a', 'b', 'c'];
array1.forEach(element => console.log(element));
// expected output: "a"
// expected output: "b"
// expected output: "c"
map()
方法创建一个新数组,该数组中填充了对调用数组中的每个元素调用提供的函数的结果。
const array1 = [1, 4, 9, 16];
// pass a function to map
const map1 = array1.map(x => x * 2);
console.log(map1);
// expected output: Array [2, 8, 18, 32]
https://stackoverflow.com/questions/62969179
复制