javascript对象键和值作为数组

时间:2012-01-12 07:04:46

标签: javascript javascript-objects

我想动态创建一个形式的对象 - {“abc”:[x1,x2],“efg”:[x3,x4,x1]} 以下代码不起作用..这里有什么问题?

var catCmp = {};
var x1="abc";
var x2="efg";

var y1="x1";
var y2="x2";
var y3="x3";
var y4="x4";

if (typeof catCmp[x1] === 'undefined') {
    catCmp[x1] = [];
}
if (typeof catCmp[x2] === 'undefined') {
    catCmp[x2] = [];
}

catCmp[x1] = catCmp[x1].push(y1);
catCmp[x1] = catCmp[x1].push(y2);
catCmp[x2] = catCmp[x2].push(y3);
catCmp[x2] = catCmp[x2].push(y4);
catCmp[x2] = catCmp[x2].push(y1);

console.log('catCmp :::', catCmp);

4 个答案:

答案 0 :(得分:6)

您无需返回推送操作的结果。您只需拨打catCmp[x1].push(y1);

即可

答案 1 :(得分:3)

在行中:

catCmp[x1] = catCmp[x1].push(y1); 

catCmp[x1].push(y1)返回的值是y1的值。这是分配给catCmp[x1]的值。

正如其他答案中所建议的那样,不要做任务,只需这样做:

catCmp[x1].push(y1); 

答案 2 :(得分:0)

catCmp[x1].push(y1);
catCmp[x1].push(y2);
catCmp[x2].push(y3);
catCmp[x2].push(y4);
catCmp[x2].push(y1);

答案 3 :(得分:0)

JavaScript push method返回调用push方法的对象的新长度。

所以,在你的情况下,声明

catCmp[x1] = catCmp[x1].push(y1);

使catCmp [x1] = catCmp [x1] .length

不只是你不需要,你不应该分配推送操作的结果。所以,只需使用:

catCmp[x1].push(y1);