[英]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.