如何在 JavaScript 中初始化一个对象,其属性是数组?我想要一个这种格式的对象:foo = { prop1: [0, 1], prop2: [1, 1], prop3: [0] }我的用例如下:- 当一个属性不存在时,创建这个应该是一个数组的属性并添加一个数字。- 当属性已经存在时,将数字推送到该数组;这样我就不能每次都初始化一个数组。到目前为止我所做的是: var obj = {};
arr.forEach(x => { !obj[x] && obj[x].push(1) });我收到此错误:未捕获的类型错误:无法读取未定义的属性“推送”这是有道理的,因为该属性尚未初始化为空数组。
2 回答
慕森卡
TA贡献1806条经验 获得超8个赞
Ciao 你可以试试这个:
let obj = {};
let arr = ["prop1","prop2","prop1","prop3"];
arr.forEach((x) => {
if(obj.hasOwnProperty(x)) obj[x].push(1);
else {
obj[x] = [];
obj[x].push(1);
}
})
console.log(obj);
如果 obj 已经有属性 x ( hasOwnProperty) push value 1 else init x as array property and push 1.
一只斗牛犬
TA贡献1784条经验 获得超2个赞
添加此代码段:
arr.forEach((x) => {obj[x] = (obj[x] || []).concat(1);})
如果obj[x]
是undefined
,那么它还没有被初始化。因此,undefined || []
解析为[]
,一个空数组,可以将1
或您想要的任何数据连接到该数组。
添加回答
举报
0/150
提交
取消