这应该很简单但我在这里有点困惑。我想填写这个对象:
var obj = { 2:some1, 14:some2, three:some3, XX:some4, five:some5 };
但是从一开始我就有了这个:
var obj = {};
我正在制作但我不知道如何添加,我使用的是push(),但是无法正常工作。有什么帮助吗?
答案 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;
我不确定你如何确定你的键值,所以如果没有这些信息,我就无法编写重新创建对象的解决方案(因为它们看起来是随机的)。