Javascript 包含数组的对象-有没有更简单的方法来编写此公共模式

Javascript 包含数组的对象-有没有更简单的方法来编写此公共模式,javascript,arrays,undefined,javascript-objects,Javascript,Arrays,Undefined,Javascript Objects,通常,我希望创建一个javascript对象,并在某个索引处向数组中插入项。我发现自己经常写这种模式: var obj = {} for (let item of list) { if (obj[condition] == undefined) { obj[condition] = [item]; } else { obj[condition].push(item); } } 我只是觉得经常检查未定义的内容令人沮丧。有更好的方法吗 编辑:

通常,我希望创建一个javascript对象,并在某个索引处向数组中插入项。我发现自己经常写这种模式:

var obj = {}
for (let item of list) {
    if (obj[condition] == undefined) {
        obj[condition] = [item];
    } else {
        obj[condition].push(item);
    }
}
我只是觉得经常检查未定义的内容令人沮丧。有更好的方法吗

编辑:谢谢尼克帮我找到我喜欢的解决方案

常量列表=[1,2,3,4,5]; var obj={} 对于列表中的let项{ 对象[项目%2]=[…对象[项目%2]| |[],项目] }
console.logobj您可以使用数组扩展操作符来简化操作。
obj[条件]=obj[条件]?[…对象[条件],项目]:[项目]

可以使用数组扩展操作符简化操作。 obj[条件]=obj[条件]?[…对象[条件],项目]:[项目]

我倾向于在这种情况下使用reduce。您仍然需要检查数组是否存在,但是您可能能够像下面的代码中那样压缩逻辑

常数列表=[{ 种类:水果,, 商品:苹果 }, { 类型:素食者, 项目:玉米 }, { 种类:水果,, 项目:香蕉 }]; const obj=list.reduceac,el=>{ 附件[el.type]=[…附件[el.type]| |[],el.item]; 返回acc; }, {}; console.logobj 我倾向于在这类情况下使用reduce。您仍然需要检查数组是否存在,但是您可能能够像下面的代码中那样压缩逻辑

常数列表=[{ 种类:水果,, 商品:苹果 }, { 类型:素食者, 项目:玉米 }, { 种类:水果,, 项目:香蕉 }]; const obj=list.reduceac,el=>{ 附件[el.type]=[…附件[el.type]| |[],el.item]; 返回acc; }, {};
console.logobj;谢谢你,尼克。我使用了你的reduce内部函数,我会记住你的reduce偏好。我需要更多地使用它。为我的解决方案编辑了我的帖子谢谢尼克。我使用了你的reduce内部函数,我会记住你的reduce偏好。我需要更多地使用它。为我的解决方案编辑了我的帖子