Javascript 包含数组的对象-有没有更简单的方法来编写此公共模式
通常,我希望创建一个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); } } 我只是觉得经常检查未定义的内容令人沮丧。有更好的方法吗 编辑:
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偏好。我需要更多地使用它。为我的解决方案编辑了我的帖子