You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 22:57:05