здесь сообщения отображаются в неправильном порядке, сообщение отправителя how are you doing?
должно быть внизу сообщения получателя hi heelo
как отсортировать время? и вот код, пожалуйста, помогите мне заранее спасибо
{ newArr ? newArr.map((m) => {
return <div className = {m.type === "sent" ? 'media media-chat media-chat-reverse' : 'media media-chat'}><p>{m.msg}</p>
<p>{m.date}</p>
</div>
}) : null }
{ newArr ? newArr.sort((a, b) => a.date > b.date ? 1 : -1).map((m) => {
return (
<div className = {m.type === "sent" ? 'media media-chat media-chat-reverse' : 'media media-chat'}><p>{m.msg}</p>
<p>{m.date}</p>
</div>)
}) : null }
Это не работает в случае, когда a.date
и b.date
совпадают правильно. В этом случае обратный вызов sort
должен возвращать 0
, а не -1.
Вы не сказали, что такое
date
(число? Дата? Строка?). Если это число или дата, обратный вызовsort
должен быть:.sort((a, b) => a.date - b.date)
или от самого старого к самому новому (.sort((a, b) => b.date - a.date)
от нового к самому старому). Если это строка, см. ответы на этот вопрос, но в основном:.sort((a, b) => a.date.localeCompare(b.date))
для лексикографической сортировки по возрастанию (обратныеa
иb
в теле функции для сортировки по убыванию).