通过键将对象转换为数组和组主题!(我不确定标题是否正确,但这是我需要的:
(如果当前键等于下一个键+1和上一个键-1且它们都具有相同的值,则需要单击ck!)
这样的输入
{
"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; }
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句