现在有这样一个数组arr:
`[
{type: 1, day: 13, hours: 11, minutes: 21},
{type: 3, day: 33, hours: 14, minutes: 51},
{type: 5, day: 33, hours: 14, minutes: 51},
{type: 6, day: 33, hours: 14, minutes: 51}
]`
想实现这样的转换:
现在type缺少2和4,希望增加两项,变成下面的格式,就是已type的值为标准,从1开始,
前面缺少几个值,就增加几项空字符串
`[
{type: 1, day: 13, hours: 11, minutes: 21},
{type: '', day: '', hours: '', minutes: ''},
{type: 3, day: 33, hours: 14, minutes: 51},
{type: '', day: '', hours: '', minutes: ''},
{type: 5, day: 32, hours: 16, minutes: 21},
{type: 6, day: 31, hours: 44, minutes: 55}
]`
请问一下大家这种格式要怎么转化
let t = [
{type: 1, day: 13, hours: 11, minutes: 21},
{type: 3, day: 33, hours: 14, minutes: 51},
{type: 5, day: 33, hours: 14, minutes: 51},
{type: 6, day: 33, hours: 14, minutes: 51}
];
// 补全方法函数
let complement = function (arr) {
let res = [], lastType = 1;
arr.forEach(obj => {
let type = obj.type;
while (type > lastType) {
res.push({type: '', day: '', hours: ''});
lastType++;
}
res.push(obj);
lastType++;
})
return res;
}
// 测试打印
console.log(complement(t));
###![上传中...]()
demo([
{type: 1, day: 13, hours: 11, minutes: 21},
{type: 4, day: 33, hours: 14, minutes: 51},
{type: 6, day: 25, hours: 26, minutes: 14}
])
function demo (list) {
if(list.length) {
// 先排个序
list.sort((a, b) => a.type - b.type)
let preType = list[0].type, item;
for(let index = 1; index < list.length; index++) {
item = list[index]
if(item.type - preType > 1) {
preType++
list.splice(index, 0, { type: '', day: '', hours: '', minutes: '' })
} else {
preType = item.type
}
}
}
return list;
}