map() 方法在 JavaScript 中返回未定义[已解决]
map() method returns undefined in JavaScript [Solved]
map()
当我们忘记在传递给方法的回调函数中显式返回值时,该方法返回未定义的值。确保从回调函数返回一个值,以不获取undefined
数组中的任何值。
索引.js
const arr = [1, 2, 3]; const newArr = arr.map(num => { if (num > 2) { return num + 1; } }); console.log(newArr); // 👉️ [undefined, undefined, 4]
如果满足条件并且if
块运行,该示例仅返回一个值。
在所有其他情况下,我们隐式返回undefined
。
undefined
要不从该方法返回值map()
,您必须从传递给 的回调函数中显式返回一个值map()
。
索引.js
const arr = [1, 2, 3]; const newArr = arr.map(num => { if (num > 2) { return num + 1; } return num; }); console.log(newArr); // 👉️ [1, 2, 4]
即使if
不满足条件,我们也会返回一个值。这样就解决了回调函数返回的问题undefined
。
我们传递给
Array.map
方法的函数会针对数组中的每个元素进行调用。
该
map()
方法返回的数组由回调函数返回的值组成。如果您不从 JavaScript 中的函数返回值,则隐式返回undefined
.
索引.js
function example() { } console.log(example()); // 👉️ undefined
这是该方法返回包含值map()
的数组
的最常见原因。undefined
您可能还会显式地undefined
从函数返回一个值。
索引.js
const arr = [1, 2, 3]; const newArr = arr.map(num => { return arr[100]; }); console.log(newArr); // 👉️ [undefined, undefined, undefined]
100
我们从回调函数返回索引处的数组元素。数组中不存在该索引,因此我们显式返回undefined
。
请注意,您不必使用return
关键字从箭头函数返回值。您可以使用速记语法。
索引.js
const arr = [1, 2, 3]; const newArr = arr.map(num => num + 1); console.log(newArr); // 👉️ [2, 3, 4]
如果您可以在快速的一行中计算返回值,则可以直接在箭头之后返回值
=>
。如果使用大括号,则必须显式使用return
关键字。
要直接返回对象,请将对象括在括号中。
索引.js
const arr = [1, 2, 3]; const newArr = arr.map(num => ({myNumber: num + 1})); // 👇️ [{myNumber: 2}, {myNumber: 3}, {myNumber: 4}] console.log(newArr);
将对象包裹在括号中向函数表明我们直接返回一个对象,而不是仅使用花括号,后者会导致函数隐式返回undefined
。
索引.js
const arr = [1, 2, 3]; const newArr = arr.map(num => { myNumber: num + 1; }); // 👇️ [undefined, undefined, undefined] console.log(newArr);
结论
map()
当我们忘记在传递给方法的回调函数中显式返回值时,该方法返回未定义的值。确保从回调函数返回一个值,以不获取undefined
数组中的任何值。