JavaScript中的动态对象字面量?

10

能否动态创建对象字面量? 就像这样:

var arr = [ 'one', 'two', 'three' ]; 

var literal = {}; 

for(var i=0;i<arr.length;i++)
{
   // some literal push method here! 

  /*  literal = {
        one : "", 
        two : "",
        three : ""
    }  */ 
}

因此,我希望结果是这样的:

 literal = {
        one : "", 
        two : "",
        three : ""
    } 
3个回答

20
for ( var i = 0, l = arr.length; i < l; ++i ) {
    literal[arr[i]] = "something";
}

我还顺便优化了你的循环 :)


1
更加简洁的写法是 for(var i in arr) { literal[arr[i]] = ''; } :) - Tatu Ulmanen
7
@Tatu,你不应该使用for..in循环遍历数组。 - James
2
更好的写法是 var i = arr.length; while (i--) { literal[arr[i]] = "something" } - Eli Grey

4

在您的循环中使用以下代码:

literal[arr[i]] = "";

0

为了简单起见,您可以使用{{link1:for...of}}:

for (const key of arr) {
   literal[key] = "";
}

应该是 let key 吧? - marko
1
@marko 如果你不需要在块内重新分配变量,就可以使用const代替let,但这里并非如此,只是直接访问其值。 - ProgrammerPer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接