提问者:小点点

array.foreach()中声明的匿名函数不能返回JavaScript中的值吗? 请参见下面的代码以获得更好的图像


我是一个开发世界的新手,请帮助我摆脱这个小小的疑惑! 在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()返回值,我们可以在log中看到输出,但是与。foreach()不同的是,我们得到的唯一输出是“undefined”。我们可以使用下面的方法来实现

const numberSquare=[];
numbers.forEach(function(number){
  numberSquare.push(number*number)
})
console.log(numberSquare);

那么是不是foreach()内部声明的匿名函数不能返回值呢?


共3个答案

匿名用户

javascript中的forEach函数通常不返回值。 它只是用作迭代器函数,就像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返回的是未定义的,所以这就是您所看到的日志。 Map创建一个新的数组,使用它的回调中返回的任何内容,这就是您在控制台中看到的内容。 您在示例中在匿名函数中返回的内容不会由forEach在外部console.log中返回。 使用平方数和forEach创建数组的第二个示例是正确的。 但是,对于你想要的,我总是使用map,因为它可以满足你的需求。

如果您只想安慰一下。用forEach记录平方数,您可以这样做:

numbers.forEach(function(number) { console.log(number * number); });

但这不会创建数组,只会记录它们。 保重!