如何将对象添加到对象中

时间:2014-08-18 22:20:39

标签: javascript

我正在尝试将对象添加到另一个对象中。

我以前的帖子帮助我解决了阵列问题,但我也需要将对象添加到对象中。

我有类似

的东西
var temp = {};

for(var i=0; i<test.length; i++){
    console.log(test[i])
    console.log(product[i])
    temp.test[i] =product[i];
}

两个console.log都显示值。但是,我正在

"Uncaught TypeError: Cannot set property '0' of undefined"

temp.test[i] =product[i]

有人可以帮我解决这个问题吗?非常感谢

2 个答案:

答案 0 :(得分:3)

var temp = {test:[], product:[]};
var test = ['a','v'];
var product = ['a2','v2'];
for(var i=0; i<test.length; i++){
    console.log(test[i])
    console.log(product[i])
    temp.test.push(product[i]);
}

您需要先定义属性测试和产品,然后再推送数据。

但是,您不必循环插入每个值。您可以一次性设置整个集合。

var testCollection = ['Value 1', 'Value 2'];
var productCollection = ['Value 10', 'Value 20'];
var temp = {
    test:testCollection
  , product:productCollection
};

答案 1 :(得分:0)

如果保证product.length&gt; = test.length,或者如果您不关心添加的空条目,那么Patrick的答案就会有效。但是,如果您希望使用测试值而不是产品的空值填充剩余空间,则:

var temp = {test:[]};
var test = ['a','b','c'];
var product = ['d','e'];
for(var i=0; i<test.length; i++){
    console.log(test[i])
    console.log(product[i])
    if (i < product.length) {
        temp.test.push(product[i]);
    } else {
        temp.test.push(test[i]);
    }
}

但话说回来,我可能会过度思考这个问题,答案很简单:

var temp = {
    test: product
};