Javascript 使用数组属性初始化对象
如何在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]
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|
操作符非常有用。它通常用于带有可选参数的函数中,用默认值替换未定义的
。谢谢,这也是一个很好的解决方案!谢谢,这也是一个很好的解决方案!