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

如何在JavaScript的map函数中使用外部参数生成动态对象键名?

在map函数中使用外部参数构建动态对象键名

你遇到的问题是对象字面量中动态键名的语法错误,正确做法是使用计算属性名(用方括号包裹表达式),就能生成ema200这类动态键名,而且外部函数的period参数在map回调中可正常访问(闭包特性)。

修正后的代码如下:

export async function EMA(candles: Candle[], period: number) {
  const input = candles.map((candle) => candle.close);
  const ema = await ta.indicators.ema.indicator([input], [period]);
  const diffLen = input.length - ema[0].length;
  const emptyArray = [...new Array(diffLen)].map((entry) => 0);
  const emaValues = [...emptyArray, ...ema[0]];

  // 用方括号包裹动态键名表达式,模板字符串拼接更简洁
  candles = candles.map((candle, i) => ({
    ...candle,
    [`ema${period}`]: { value: emaValues[i], period: period },
  }));

  return candles;
}

关键说明:

  • 计算属性名语法[表达式]支持在对象字面量中动态生成键名,除了模板字符串ema${period},也可以用'ema' + period实现相同拼接效果。
  • map的回调函数处于EMA函数的作用域内,无需额外处理即可直接访问外部的period参数。

内容的提问来源于stack exchange,提问作者BitQueen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:20:25