gpt4 book ai didi

javascript - 将对象转换为数组并按对象键对它们进行分组

转载 作者:行者123 更新时间:2023-12-02 23:17:04 25 4
gpt4 key购买 nike

将对象转换为数组并按键对主题进行分组! (我不太确定标题是否正确,但这就是我需要的:

(需要检查当前键是否等于下一个键+1并且等于上一个键-1并且它们都具有相同的值!)

这样输入

{  
"2019-07-17":{
"7":66,
"8":66,
"9":66,
"11":70,
"12":70,
"16":70
},
"2019-07-18":{
"10":68,
"11":68,
"12":75,
"14":75,
"15":75,
"18":70
}
}

输出应该是这样的

{  
"2019-07-17":[
{
"start":7,
"end":9,
"id":66
},
{
"start":11,
"end":12,
"id":70
},
{
"start":16,
"end":17,
"id":70
}
],
"2019-07-18":[
{
"start":10,
"end":11,
"id":68
},
{
"start":12,
"end":13,
"id":75
},
{
"start":14,
"end":15,
"id":75
},
{
"start":18,
"end":19,
"id":70
}

]
}

最佳答案

您可以使用内部键和值对条目进行分组并获取新对象。

var data = { "2019-07-17": { 7: 66, 8: 66, 9: 66, 11: 70, 12: 70, 16: 70 }, "2019-07-18": { 10: 68, 11: 68, 12: 75, 14: 75, 15: 75, 18: 70 } },
result = Object.fromEntries(Object.entries(data).map(([k, v]) => {
var values = Object.entries(v).reduce((r, [l, id], i, { [i - 1]: last }) => {
if (last && +last[0] + 1 === +l && last[1] === id) {
r[r.length - 1].end = +l;
} else {
r.push({ start: +l, end: +l + 1, id });
}
return r;
}, []);
return [k, values];
}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 将对象转换为数组并按对象键对它们进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57126136/

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