gpt4 book ai didi

Javascript:根据属性值将对象数组拆分为具有动态名称的单独数组

转载 作者:行者123 更新时间:2023-12-03 20:19:20 25 4
gpt4 key购买 nike

我有一个包含对象的数组。现在我想将数组切片为仅包含与某个属性值匹配的对象的新数组。

理想情况下,应该动态创建新的数组名称。

原始数组如下所示:

specificSlotButtonArray = [
{slotStarttime:"06:00:00", slotTimespan:1},
{slotStarttime:"09:00:00", slotTimespan:1},
{slotStarttime:"12:00:00", slotTimespan:2},
{slotStarttime:"15:00:00", slotTimespan:2},
{slotStarttime:"18:00:00", slotTimespan:3}
];

新数组应如下所示:
timespan1 = [
{slotStarttime:"06:00:00", slotTimespan:1},
{slotStarttime:"09:00:00", slotTimespan:1}
]

timespan2 = [
{slotStarttime:"12:00:00", slotTimespan:2},
{slotStarttime:"15:00:00", slotTimespan:2}
]

timespan3 = [
{slotStarttime:"18:00:00", slotTimespan:3}
]

如果可能,我想避免使用 IE 和其他一些旧浏览器不支持的 javascript 语法/函数。

我已经尝试使用 reduce()slice() ,但没有找到解决办法。

最佳答案

您可以使用 reduce 简单地实现您想要的结果。 ,因为您可以使用 reduce 生成对象,这是您如何做到的一个示例。

如您所见,它会检查对象上的相关属性是否为空,如果是,则将其设置为空数组,在此检查之后,只需将相关值推送到数组中即可,例如所以。

var array = [{
slotStarttime: "06:00:00",
slotTimespan: 1
},
{
slotStarttime: "09:00:00",
slotTimespan: 1
},
{
slotStarttime: "12:00:00",
slotTimespan: 2
},
{
slotStarttime: "15:00:00",
slotTimespan: 2
},
{
slotStarttime: "18:00:00",
slotTimespan: 3
}
];

var newObject = array.reduce(function(obj, value) {
var key = `timespan${value.slotTimespan}`;
if (obj[key] == null) obj[key] = [];

obj[key].push(value);
return obj;
}, {});

console.log(newObject);

关于Javascript:根据属性值将对象数组拆分为具有动态名称的单独数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54008878/

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