javascript - Javascript数组数据过滤到对象数组
问题描述
我有一个像这样的数组:
ArrOfTime = ["Monday", "10:00-17:00", "Tuesday", "10:00-17:00", "17:00-21:00", "21:00-9:00", "Wednesday", "10:00-17:00", "17:00-21:00"]
我希望将格式更改为对象数组,例如:
ArrOfObj = [
{"day": "Monday", "time": "10:00-17:00"},
{"day": "Tuesday", "time": "10:00-17:00, 17:00-21:00, 21:00-9:00"},
{"day": "Wednesday", "time": "10:00-17:00, 17:00-21:00},
]
但我尝试了一些方法来改变它失败了....
for (let i = 0; i < ArrOfTime.length; i += 2) {
ArrOfObj.push({
day: ArrOfTime[i],
time: ArrOfTime[i + 1],
});
}
如何编写我的代码才能成功更改ArrOfObj之类的格式?
解决方案
ArrOfTime = ["Monday", "10:00-17:01", "Tuesday", "10:00-17:02", "17:00-21:03", "21:00-9:04", "Wednesday", "10:00-17:05", "17:00-21:06"]
const hasNumber = /\d/;
let newArr = []
let obj = {}
for (let i = 0; i < ArrOfTime.length; i++){
if( !hasNumber.test(ArrOfTime[i]) ){
obj.time = '';
obj.day = ArrOfTime[i];
newArr.push(obj)
obj = {}
} else if ( newArr[newArr.length-1].time === '') {
newArr[newArr.length-1].time = ArrOfTime[i]
} else {
newArr[newArr.length-1].time = newArr[newArr.length-1].time + `, ${ArrOfTime[i]}`
}
}
console.log('newArr', newArr)