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

在JavaScript中遍历数组时如何正确覆盖对象的指定属性?

问题根源

你使用点表示法访问对象属性时,JavaScript 会将.后的标识符视为固定的字符串属性名,而非动态变量,所以代码实际是在给emotions新增一个名为emotion的属性,而非匹配解构出的情绪值对应的属性。

最优实现方案

使用方括号计算属性名的方式访问对象属性,方括号内可以传入动态变量,会自动取变量的值作为要访问的属性名。如果要避免gestures里出现emotions未定义的异常属性,也可以加一层存在性校验,提升代码鲁棒性。

完整代码示例

const emotions = {
  happy: '',
  neutral: '',
  sad: '',
  angry: '',
  fear: ''
}

gestures.forEach(({emotion, score})=>{
  // 仅当emotion是emotions已定义的属性时才赋值,避免新增多余属性
  if (emotion in emotions) {
    emotions[emotion] = Math.trunc(100 * score)
  }
});
console.log(emotions);

如果你能确保gestures里的emotion取值一定是emotions已有的五个属性之一,可以省略校验逻辑,直接写赋值语句即可。

内容的提问来源于stack exchange,提问作者Paul Nuñez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:54:03