Jquery像数组一样填充对象

时间:2013-04-15 17:13:24

标签: javascript jquery object

这应该很简单但我在这里有点困惑。我想填写这个对象:

var obj = { 2:some1, 14:some2, three:some3, XX:some4, five:some5 };

但是从一开始我就有了这个:

var obj = {};

我正在制作但我不知道如何添加,我使用的是push(),但是无法正常工作。有什么帮助吗?

3 个答案:

答案 0 :(得分:3)

你不能.push()进入javascript OBJECT,因为它使用自定义键而不是索引。这样做的方式非常类似:

var obj = {};

for (var k = 0; k<10; k++) {
    obj['customkey'+k] = 'some'+k;
}

这将返回:

obj {
    customkey0 : 'some0',
    customkey1 : 'some1',
    customkey2 : 'some2',
    ...
}

请记住,数组:['some1','some2']基本上和对象一样: { 0 : 'some1', 1 : 'some2' } 对象用STRING键替换“index”(0,1等)的位置。 希望这会有所帮助。

答案 1 :(得分:1)

push()用于数组,但您正在创建一个对象。

您可以通过几种不同的方式向对象添加属性:

obj.one = some1;

obj['one'] = some1;

答案 2 :(得分:0)

我会写一个这样的简单函数:

 function pushVal(obj, value) {
     var index = Object.size(obj);
     //index is modified to be a string.
     obj[index] = value;
 }

然后在您的代码中,当您想要向对象添加值时,您只需调用:

  for(var i=0; i<someArray.length; i++) {
      pushVal(obj, someArray[i]);
   }

有关我使用的尺寸功能的信息,请参阅here。注意,可以使用for循环中的索引,但是,如果要向这个对象添加多个数组,我的方法可以防止冲突索引。

编辑

在问题示例中看到您更改了密钥,为了创建对象,您可以使用以下内容:

function pushVal(obj, value, key) {
     //index is modified to be a string.
     obj[key] = value;
 }

 or 

 obj[key] = value;     

我不确定你如何确定你的键值,所以如果没有这些信息,我就无法编写重新创建对象的解决方案(因为它们看起来是随机的)。