Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用数组属性初始化对象_Javascript_Arrays_Object_Initialization - Fatal编程技术网

Javascript 使用数组属性初始化对象

Javascript 使用数组属性初始化对象,javascript,arrays,object,initialization,Javascript,Arrays,Object,Initialization,如何在JavaScript中初始化属性为数组的对象 我想要一个这种格式的对象: foo = { prop1: [0, 1], prop2: [1, 1], prop3: [0] } 我的用例如下所示: -如果某个属性不存在,请创建该属性,该属性应为数组并添加一个数字 -当某个属性已经存在时,将该数字推送到该数组;这样我就不能每次初始化数组 到目前为止,我所做的是: var obj = {}; arr.forEach(x => { !obj[x] && obj[x]

如何在JavaScript中初始化属性为数组的对象

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

foo = { prop1: [0, 1], prop2: [1, 1], prop3: [0] }
我的用例如下所示:

-如果某个属性不存在,请创建该属性,该属性应为数组并添加一个数字

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

到目前为止,我所做的是:

  var obj = {};
  arr.forEach(x => { !obj[x] && obj[x].push(1) });
我得到这个错误:

未捕获的TypeError:无法读取未定义的属性“push”

这很有意义,因为属性尚未初始化为空数组。

添加此代码段:

arr.forEach((x) => {obj[x] = (obj[x] || []).concat(1);})
如果
obj[x]
未定义的
,则它尚未初始化。因此,
undefined | |[]
解析为
[]
,一个空数组,可以将
1
或您想要的任何数据连接到该数组。

添加此代码段:

arr.forEach((x) => {obj[x] = (obj[x] || []).concat(1);})

如果
obj[x]
未定义的
,则它尚未初始化。因此,
undefined | |[]
解析为
[]
,一个空数组,可以将
1
或您想要的任何数据连接到该数组。

Ciao您可以尝试以下方法:

让obj={};
设arr=[“prop1”、“prop2”、“prop1”、“prop3”];
arr.forEach((x)=>{
if(obj.hasOwnProperty(x))obj[x].push(1);
否则{
obj[x]=[];
obj[x].push(1);
} 
})

控制台日志(obj)Ciao您可以尝试以下方法:

让obj={};
设arr=[“prop1”、“prop2”、“prop1”、“prop3”];
arr.forEach((x)=>{
if(obj.hasOwnProperty(x))obj[x].push(1);
否则{
obj[x]=[];
obj[x].push(1);
} 
})

控制台日志(obj)
你能给我们一些输入和期望输出的例子吗?例如,我在两个数组上迭代,如果数组包含一些特定的项,我想要0/1(或真/假),例如array1=[“cat”,“dog”],array2=[“dog”,“mouse”];对象的格式是:{“cat”:[1,0],“dog”:[1,1],“mouse”:[0,1]}您能给我们一些输入和所需输出的示例吗?例如,我在迭代两个数组,如果数组包含一些特定项,我希望有0/1(或true/false),例如array1=[“cat”,“dog”],array2=[“dog”,“mouse”];对象的格式如下:{“猫”:[1,0],“狗”:[1,1],“鼠标”:[0,1]}这很优雅:)谢谢!Javascript的lazy
|
操作符非常有用。它通常用于带有可选参数的函数中,用默认值替换未定义的
!Javascript的lazy
|
操作符非常有用。它通常用于带有可选参数的函数中,用默认值替换
未定义的
。谢谢,这也是一个很好的解决方案!谢谢,这也是一个很好的解决方案!