在数组javascript的对象中插入空对象



我有一个数组:

let data = {
{date: 3, type: solid; total: 3},
{date: 5, type: solid; total: 10}
}

是否可以将它转换成新的数组,输出如下:

data: {
0: {date: 1, type: solid; total: null},
1: {date: 2, type: solid; total: null},
2: {date: 3, type: solid; total: 3},
3: {date: 4, type: solid; total: null},
4: {date: 5, type: solid; total: 10},
5: {date: 6, type: solid; total: null},
6: {date: 7, type: solid; total: null},
....
27: {date: 28, type: solid; total: null},
28: {date: 29, type: solid; total: null},
29: {date: 30, type: solid; total: null},
30: {date: 31, type: solid; total: null}
}

我希望新数组的长度与当前月份的总日期相同由于之前

您的data是一个对象,我假设它是一个数组,代码应该看起来像:

const daysOfMonth = new Date(Date.UTC(new Date().getUTCFullYear(), new Date().getUTCMonth() + 1, 0)).getDate()
const data = [{
date: 3,
type: 'solid',
total: 3
},
{
date: 5,
type: 'solid',
total: 10
}
]
const result = []
const resultObject = {}
for(let i = 0; i < daysOfMonth; i++) {
let exist = data.find(el => el.date === i)
if(exist) {
result[i] = {...exist}
resultObject[i] = {...exist}
} else {
result[i] = {date: i, type: 'solid', total: null}
resultObject[i] = {date: i, type: 'solid', total: null}
}
}
console.log('Array : ', result)
console.log('Object : ', resultObject)

你可以这样做

let data = [
{ date: 3, type: "solid", total: 3 },
{ date: 5, type: "solid", total: 10 },
];
//get current month date
let now = new Date();
let dateCount = new Date(now.getFullYear(), now.getMonth() + 1, 0).getDate();
let text = [];
for (let i = 1; i <= dateCount; i++) {
let filterData = data.filter((data) => data.date === i);
if (filterData.length > 0) {
text.push(filterData[0]);
} else {
let tempObj = { date: i, type: "solid", total: null };
text.push(tempObj);
}
}
console.log("text=>", text);

最新更新