我有一組日期相同或不同的物件:
const obj = [
{'date': '2021-12-13T02:32:24.911 00:00'
'id' : 'id1'
},
{'date': '2021-12-15T02:54:06.248 00:00'
'id' : 'id2'
},
{'date': '2021-12-15T02:54:06.248 00:00'
'id' : 'id3'
},
{'date': '2021-12-14T02:54:06.248 00:00'
'id' : 'id4'
},
{'date': '2021-12-17T02:54:06.248 00:00'
'id' : 'id5'
},
{'date': '2021-12-17T02:54:06.248 00:00'
'id' : 'id6'
},
]
我還有一個陣列,其中包含從星期六開始的本周日期:
const weekDates = ['12/11/2021', '12/12/2021', '12/13/2021', '12/14/2021', '12/15/2021', '12/16/2021', '12/17/2021']
最終,我想在兩個陣列中找到相同的日期,并將已識別的物件從 obj 陣列推送到一個新物件。
const newObject = {
'Sat' : [],
'Sun' : [],
'Mon' : [{'date': '2021-12-13T02:32:24.911 00:00'
'id' : 'id1'}],
'Tue' : [{'date': '2021-12-14T02:54:06.248 00:00'
'id' : 'id4'}],
'Wed' : [{'date': '2021-12-15T02:54:06.248 00:00'
'id' : 'id2'},
{'date': '2021-12-15T02:54:06.248 00:00'
'id' : 'id3'}],
'Thu' : [],
'Fri' : [ {'date': '2021-12-17T02:54:06.248 00:00'
'id' : 'id5'},
{'date': '2021-12-17T02:54:06.248 00:00'
'id' : 'id6'},]
}
我試過的:
newDates.forEach(weekday => {
obj.map(obj => {
const date = new Date(obj.date).toLocaleDateString()
if(date.includes(weekday)) {
// some code here
}
})
})
uj5u.com熱心網友回復:
您可以通過使用forEachhelper fromArray和toLocaleDateStringhelper from 來實作Date,如下所示:
const obj = [
{'date': '2021-12-13T02:32:24.911 00:00',
'id' : 'id1'
},
{'date': '2021-12-15T02:54:06.248 00:00',
'id' : 'id2'
},
{'date': '2021-12-15T02:54:06.248 00:00',
'id' : 'id3'
},
{'date': '2021-12-14T02:54:06.248 00:00',
'id' : 'id4'
},
{'date': '2021-12-17T02:54:06.248 00:00',
'id' : 'id5'
},
{'date': '2021-12-17T02:54:06.248 00:00',
'id' : 'id6'
},
];
const weekDates = ['12/11/2021', '12/12/2021', '12/13/2021', '12/14/2021', '12/15/2021', '12/16/2021', '12/17/2021'];
const days =["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
const newObject= {Sat:[], Sun: [], Mon: [], Tue:[], Wed:[], Thu:[], Fri: []};
obj.forEach(item => {
const dateObj = new Date(item.date)
if( weekDates.includes( dateObj.toLocaleDateString() ) ){
const day = days[dateObj.getDay()]
newObject[day].push(item)
}
})
console.log(newObject);
.as-console-wrapper { max-height: 100% !important; top: 0; }
uj5u.com熱心網友回復:
對于您的具體問題,我們可以使用Date.prototype.toDateString()來獲取星期幾并使用它。
const firstArray = [{'date': '2021-12-13T02:32:24.911 00:00','id' : 'id1'}];
const secondArray = ['12/11/2021'];
const datesExistsInBothArrays = firstArray.filter(({ date, id } => {
const firstArrayDate = new Date(date).valueOf();
for (const secondDate of secondArray) {
const secondArrayDate = new Date(secondDate).valueOf();
if (firstArrayDate === secondArrayDate) return true;
}
return false;
});
const result = {};
for (const date of datesExistsInBothArrays) {
const day = date.toDateString().split(' ')[0];
if (result[day]) {
result[day].push(date);
} else {
result[day] = [date];
}
}
uj5u.com熱心網友回復:
您可以使用一些幫助程式,一個用于日期的陣列,一個物件作為對日期的參考,通過參與 ISO 字串并收集所有資料到他們的日子。
const
weekDates = ['12/11/2021', '12/12/2021', '12/13/2021', '12/14/2021', '12/15/2021', '12/16/2021', '12/17/2021'],
days = ['Sat', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri'],
objects = [{ date: '2021-12-13T02:32:24.911 00:00', id: 'id1' }, { date: '2021-12-15T02:54:06.248 00:00', id: 'id2' }, { date: '2021-12-15T02:54:06.248 00:00', id: 'id3' }, { date: '2021-12-14T02:54:06.248 00:00', id: 'id4' }, { date: '2021-12-17T02:54:06.248 00:00', id: 'id5' }, { date: '2021-12-17T02:54:06.248 00:00', id: 'id6' }],
getISODate = s => s.replace(/^(..)\/(..)\/(....)$/, '$3-$1-$2'),
reference = Object.fromEntries(
weekDates.map((date, i) => [getISODate(date), days[i]])
),
result = objects.reduce(
(r, o) => (r[reference[o.date.slice(0, 10)]].push(o), r),
Object.fromEntries(days.map(d => [d, []]))
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/382260.html
標籤:javascript 数组 反应 日期
