如何在Array.from()函数中向传入的函数传递数组索引
解决方案
你当前的写法存在问题:直接写 func(index) 会立刻尝试调用 func,但此时 index 并未定义,会触发报错。
实际上,Array.from 的第二个参数本身就是一个映射函数,它会自动接收两个参数:当前元素(基于 {length} 创建的数组中,元素都是 undefined)和当前索引。所以你只需把 func 直接传给 Array.from 作为第二个参数即可,不需要额外调用。
正确的代码实现如下:
const g = (length, func) => { return Array.from({ length }, func); }; const getData = (index) => { return { id: index } }; // 调用时传入数组长度和getData函数 console.log(g(5, getData)); // 输出结果: [{id:0}, {id:1}, {id:2}, {id:3}, {id:4}]
另外需要注意,你最初的调用方式 g(getData()) 是错误的——getData() 会直接执行并返回值,但 g 期望第二个参数是一个函数。正确的调用应该是传入长度数值和 getData 函数本身。
如果数组长度需要通过某个函数动态获取,比如长度来自另一个函数的返回值,可以这样写:
// 示例:返回数组长度的函数 const getArrayLength = () => 3; console.log(g(getArrayLength(), getData)); // 输出结果: [{id:0}, {id:1}, {id:2}]
总结要点:
Array.from的第二个参数会自动将索引传递给传入的函数- 不要在
Array.from内部直接调用函数(如func(index)),只需传递函数引用 - 调用
g时要传入正确参数:第一个是数组长度,第二个是处理索引的函数
内容的提问来源于stack exchange,提问作者Sergino
相关产品推荐
相关产品推荐

