自动对象数字键分配

时间:2014-10-05 17:07:46

标签: javascript

创建数组时,我们可以忽略关键字段,让JavaScript从0开始按顺序为我们生成关键字。

var color = ['green', 'blue', 'red', 'yellow', 'purple'];

我们可以像

那样访问
alert(color[0]);  //green

我想用数字键创建一个对象,但我不想明确定义它们,是否有类似的方法?

我试过了

var color = {'green', 'blue', 'red', 'yellow', 'purple'};
console.log(color);

但是这并没有按预期工作,返回 SyntaxError:missing:在属性id之后

3 个答案:

答案 0 :(得分:0)

我认为不可能。根据W3C定义javascript对象:

JavaScript对象是命名值的容器。

命名值写为名称:值对(名称和值以分号分隔)。

JavaScript对象中的名称:值对称为对象属性。

因此你不能这样做。要么使用循环来创建这种情况。例如:

var obj = {};
for(var i = 0; i < length; i += 1) {
    obj[i] = color[i] ;
}

答案 1 :(得分:0)

不可能。这就是js对象的方式。

您是否只是遍历数组并将数据放入对象中?

var color = ['green', 'blue', 'red', 'yellow', 'purple'];
var colors_obj = {};

for(var color_num_key in color) {
    colors_obj[color_num_key] = color[color_num_key];
}

console.log(colors_obj);

JS Fiddle demo

答案 2 :(得分:0)

如果你坚持,@ canon的reduce解决方案和@ Fyre的手动解决方案都很好,但同时也是:

$.extend({}, color)                 // jQuery
_.extend({}, color)                 // Underscore
Object.assign({}, color)            // ES6
LIB.extend_like_api({}, color)      // all other libraries in the world

基本上所有这些都是删除&#34; array-ness&#34;数组。