Array.forEach() 中声明的匿名函数不能在 JavaScript 中 return 值吗?请参阅下面的代码以获得更好的图片
Can the anonymous functions declared inside of Array.forEach() cannot return values in JavaScript? See code below for getting a better picture
我是开发世界的新手,请帮我解决这个小疑惑!
在 arrayName.map(anonymous Function 1) 和 arrayName.forEach(anonymous Function 2) 中,匿名函数 1 returns 值但匿名函数 2 不能 return 值.看
例如下面的代码 !
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() returns 的值我们可以在日志中看到输出,但与 .forEach() 不同的是,我们得到的唯一输出是“未定义”。我们可以实现以上使用以下方法
const numberSquare=[];
numbers.forEach(function(number){
numberSquare.push(number*number)
})
console.log(numberSquare);
所以在foreach()里面声明的匿名函数是不是不能return值?
javascript 中的 forEach 函数一般不会 return 值。它只是像 for 循环一样用作迭代器函数。如果您需要值,则必须使用例如 map、filter、find、findIndex 或 reduce 或像在第二个示例中那样使用它。
来自 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]
因为你是开发新手,你可以看看关于 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 return未定义,所以这就是您看到的记录内容。 Map 创建一个新数组,其中包含回调中 returned 的任何内容,这就是您在控制台中看到的内容。
您在匿名函数示例中的 return 不是由外部 console.log 中的 forEach 编辑的 return。您使用平方数和 forEach 创建数组的第二个示例是正确的。但是,对于您想要的,我总是会使用地图,因为它完全可以满足您的需求。
如果你只想用 forEach console.log 平方数,你可以这样做:
numbers.forEach(function(number) { console.log(number * number); });
但这不会创建数组,只会记录它们。
保重!
完全同意,感谢大家解惑!
同样在下面,我得到了一个有趣的博客,旨在指出“forEach()”和“map()”方法之间的区别。读一读
https://www.freecodecamp.org/news/4-main-differences-between-foreach-and-map/
我是开发世界的新手,请帮我解决这个小疑惑! 在 arrayName.map(anonymous Function 1) 和 arrayName.forEach(anonymous Function 2) 中,匿名函数 1 returns 值但匿名函数 2 不能 return 值.看 例如下面的代码 !
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() returns 的值我们可以在日志中看到输出,但与 .forEach() 不同的是,我们得到的唯一输出是“未定义”。我们可以实现以上使用以下方法
const numberSquare=[];
numbers.forEach(function(number){
numberSquare.push(number*number)
})
console.log(numberSquare);
所以在foreach()里面声明的匿名函数是不是不能return值?
javascript 中的 forEach 函数一般不会 return 值。它只是像 for 循环一样用作迭代器函数。如果您需要值,则必须使用例如 map、filter、find、findIndex 或 reduce 或像在第二个示例中那样使用它。
来自 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]
因为你是开发新手,你可以看看关于 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 return未定义,所以这就是您看到的记录内容。 Map 创建一个新数组,其中包含回调中 returned 的任何内容,这就是您在控制台中看到的内容。 您在匿名函数示例中的 return 不是由外部 console.log 中的 forEach 编辑的 return。您使用平方数和 forEach 创建数组的第二个示例是正确的。但是,对于您想要的,我总是会使用地图,因为它完全可以满足您的需求。
如果你只想用 forEach console.log 平方数,你可以这样做:
numbers.forEach(function(number) { console.log(number * number); });
但这不会创建数组,只会记录它们。 保重!
完全同意,感谢大家解惑! 同样在下面,我得到了一个有趣的博客,旨在指出“forEach()”和“map()”方法之间的区别。读一读 https://www.freecodecamp.org/news/4-main-differences-between-foreach-and-map/