【问题标题】:Passing in dynamic key:value pairs to an object literal? [duplicate]将动态键:值对传递给对象文字? [复制]
【发布时间】:2010-11-07 19:37:56
【问题描述】:

我正在使用这段代码(如下所示)来尝试在 for 循环中填充名为 Parameters 的对象字面量。我需要将key:value 对与迭代i 变量的循环一起分配,例如:{key_1:chunks[1],key_2:chunks[2]}。但是,我的代码不起作用。 'key_'+i 没有反映在文字中。

显然,我在这里缺少一些东西。谁能告诉我它是什么?...谢谢。

var Parameters=[];
var len = chunks.length;
for (var i = 0; i < len; i++) {
    var key='key_'+i
    obj= { key : chunks[i]};
   Parameters.push(obj)
}

【问题讨论】:

标签: javascript


【解决方案1】:

编辑:使用var obj = {}; obj[key] = chunks[i];

因为 ECMAScript 将这个 {key:1} 中的 key 视为文字。

【讨论】:

  • 是的,只在问题中打错了字。应该是var Parameters=[];。问题/问题仍然存在。
【解决方案2】:

ES2015 (via Babel) 支持动态键:

const Parameters=[];
const len = chunks.length;
for (let i = 0; i < len; i++) {
    const key = `key_${i}`;
    obj = { [key] : chunks[i]};
    Parameters.push(obj);
}

(注意键周围的括号)

或者更好:

const Parameters = chunks.map((c, i) => ({ [`key_${i}`]: c }));

【讨论】:

    【解决方案3】:

    same 可用于查找: obj[key] 。请记住 obj.key 会在对象中查找键

    var obj = {
        test:1
    }
    
    
    var key = 'test'
    obj.test = obj[key] = 1
    

    这里 obj.key 不起作用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 2022-08-09
      • 2015-01-20
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多