繁体   English   中英

javascript对象键和值作为数组

[英]javascript object key and value as array

我想动态创建以下形式的对象-{“ 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);

您无需分配回推操作的结果。 您可以简单地调用catCmp[x1].push(y1);

在该行中:

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

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

如其他答案中所建议,不要做作业,只需做:

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

JavaScript push方法返回在其上调用push方法的对象的新长度。

因此,就您而言,声明

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

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

不仅不需要,而且不应分配推操作的结果。 因此,只需使用:

catCmp[x1].push(y1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM