gpt4 book ai didi

javascript - 包含数组的对象 - 是否有更简单的方法来编写这种常见模式

转载 作者:行者123 更新时间:2023-11-30 10:58:27 24 4
gpt4 key购买 nike

我经常想创建一个 javascript 对象并在某个索引处将项目插入到数组中。我发现自己经常写这种模式:

var obj = {}
for (let item of list) {
if (obj[condition] == undefined) {
obj[condition] = [item];
} else {
obj[condition].push(item);
}
}

我只是发现不断检查未定义的情况令人沮丧。有更好的方法吗?

编辑:感谢 Nick 帮我找到了我喜欢的解决方案

const list = [1, 2, 3, 4, 5];
var obj = {}
for (let item in list) {
obj[item%2] = [...obj[item%2] || [], item]
}

console.log(obj)

和功能方法:

const list = [1, 2, 3, 4, 5];
var obj = list.reduce((acc, item) => {
acc[item%2] = [...acc[item%2] || [], item]
return acc;
}, {});

console.log(obj)

最佳答案

对于这类情况,我倾向于使用reduce。您最终仍然需要检查数组是否存在,但您可以像以下代码一样压缩逻辑。

const list = [{
type: "fruit",
item: "apple"
}, {
type: "veggie",
item: "corn"
}, {
type: "fruit",
item: "banana"
}];

const obj = list.reduce((acc, el) => {
acc[el.type] = [...acc[el.type] || [], el.item];
return acc;
}, {});

console.log(obj);

关于javascript - 包含数组的对象 - 是否有更简单的方法来编写这种常见模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59062599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com