使用数组属性初始化对象

如何在 JavaScript 中初始化一个对象,其属性是数组?

我想要一个这种格式的对象:

foo = { prop1: [0, 1], prop2: [1, 1], prop3: [0] }

我的用例如下:

- 当一个属性不存在时,创建这个应该是一个数组的属性并添加一个数字。

- 当属性已经存在时,将数字推送到该数组;这样我就不能每次都初始化一个数组。

到目前为止我所做的是:

  var obj = {};
  arr.forEach(x => { !obj[x] && obj[x].push(1) });

我收到此错误:

未捕获的类型错误:无法读取未定义的属性“推送”

这是有道理的,因为该属性尚未初始化为空数组。


手掌心
浏览 93回答 2
2回答

慕森卡

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.

一只斗牛犬

添加此代码段:arr.forEach((x) => {obj[x] = (obj[x] || []).concat(1);})如果obj[x]是undefined,那么它还没有被初始化。因此,undefined || []解析为[],一个空数组,可以将1或您想要的任何数据连接到该数组。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript