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

JavaScript对象添加键值对时动态键失效的解决方法

解决方案

问题出在你使用对象字面量时,直接写header会被解析为固定字符串键名,而非变量的实际值。要让变量值作为键名,需要用ES6引入的计算属性名语法。

方法一:使用计算属性名(推荐)

直接在对象字面量里用方括号包裹变量,这样就会将变量的值作为键名:

for (var j = 0; j < words.length; j++) {
  let criteria = {};
  let header = headers[j];
  // 用方括号包裹header变量,将其值作为键名
  Object.assign(criteria, { [header]: words[j] });
  // ...后续逻辑
}

方法二:先手动创建键值对(兼容旧环境)

如果需要兼容不支持ES6的环境,可以先创建临时对象,再通过方括号赋值:

for (var j = 0; j < words.length; j++) {
  let criteria = {};
  let header = headers[j];
  const temp = {};
  temp[header] = words[j];
  Object.assign(criteria, temp);
  // ...后续逻辑
}

额外提示

如果你的需求是把所有headers和words的键值对合并到同一个criteria对象中,需要把let criteria = {};移到循环外面,否则每次循环都会重置这个对象:

let criteria = {}; // 移到循环外
for (var j = 0; j < words.length; j++) {
  let header = headers[j];
  Object.assign(criteria, { [header]: words[j] });
}
// 最终criteria会包含所有键值对:{designation: 'Manager', address: 'UK', ...}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:52:35