这应该很容易,但我在这里有点困惑。我想填补这个对象:Jquery像数组填充对象
var obj = { 2:some1, 14:some2, three:some3, XX:some4, five:some5 };
但在一开始我有这样的:
var obj = {};
I'm作出的,但我不知道怎么加,我用推( ),但不起作用。任何帮助?
这应该很容易,但我在这里有点困惑。我想填补这个对象:Jquery像数组填充对象
var obj = { 2:some1, 14:some2, three:some3, XX:some4, five:some5 };
但在一开始我有这样的:
var obj = {};
I'm作出的,但我不知道怎么加,我用推( ),但不起作用。任何帮助?
你不能.push()
成JavaScript对象,因为它使用的自定义键,而不是指数的。这样做的方式是非常喜欢这样的:
var obj = {};
for (var k = 0; k<10; k++) {
obj['customkey'+k] = 'some'+k;
}
这将返回:
obj {
customkey0 : 'some0',
customkey1 : 'some1',
customkey2 : 'some2',
...
}
请记住,一个数组:['some1','some2']
是basicly喜欢和对象: { 0 : 'some1', 1 : 'some2' }
当一个对象替换“索引”(0,1等)由一个STRING键实现。 希望这有助于。
这对我来说非常好!谢谢。 – RicardoGonzales
push()
是用于数组,但您正在创建一个对象。
您可以在几个不同的方式添加属性的对象:
obj.one = some1;
或
obj['one'] = some1;
我会写一个简单的函数是这样的:
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;
我不知道你怎么确定你的关键价值,所以如果没有这些信息,我不能写一个解决方案来重新创建对象,(因为它们看起来是随机的)。
听起来不错,但你可以去那个“原型”。类似于 Object.prototype.pushVal = function(index,value){this [index] = value; 返回此; } 而你只需要去: var obj = {} obj。pushVal('some1','some1'的一些值); “返回这个”只是为了确保你能排队这样的事情: obj.pushVal('1','test')。pushVal('2','另一个测试') – Bene
我避免原型简单因为Object.prototype对变化很敏感,修改它时应该非常小心。 – Jlange
是真的。其实这一个会有问题,但它只是展示一些其他可能的解决方案。 – Bene
因此,你的钥匙不按顺序,并有不同的名称计划? – Jlange
是的,他们是不一样的 – RicardoGonzales