Как отсортировать список элементов на основе свойства даты? - PullRequest
0 голосов
/ 10 октября 2018
const questions = [
    {
        "_id" : ObjectId("5bbe4c6d5eca146adc895fa4"),
        "title" : "How to Toggle between adding and removing Ajax text",
        "date" : "2018-10-10T22:01:01+03:00",
        "questionerId" : "5bbda46a433ced65ac7c4699",
        "voteNumber" : 0,
    },
    ,
];

У меня есть список вопросов, и я хочу отсортировать их по дате, moment.from (), правильно.Как это сделать?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы можете сделать это следующим образом:

questions.sort((a, b) => new Date(a.date) - new Date(b.date))

Однако я бы предложил преобразовать все строки даты в экземпляры Date перед фактической сортировкой:

questions
  .map(q => ({ ...q, date: new Date(q.date) }))
  .sort((a, b) => a.date - b.date)
0 голосов
/ 10 октября 2018

Вам не нужно анализировать строку даты с моментом для сортировки массива.Вы можете сделать это просто, отсортировав строки.

Для этого вы можете использовать fe String.prototype.localeCompare .

const questions = [{
    	  "_id" : "5bbe4c6d5eca146adc895fa4",
          "title" : "How to Toggle between adding and removing Ajax text",
          "date" : "2018-10-10T22:01:01+03:00",
          "questionerId" : "5bbda46a433ced65ac7c4699",
          "voteNumber" : 0,
	},
	{
          "_id" : "5bbe4c6d5eca146adc895fa4",
          "title" : "How to Toggle between adding and removing Ajax text",
          "date" : "2018-10-11T22:01:01+03:00",
          "questionerId" : "5bbda46a433ced65ac7c4699",
          "voteNumber" : 0,
	},{
    	  "_id" : "5bbe4c6d5eca146adc895fa4",
          "title" : "How to Toggle between adding and removing Ajax text",
          "date" : "2018-10-09T22:01:01+03:00",
          "questionerId" : "5bbda46a433ced65ac7c4699",
          "voteNumber" : 0,
	}];

console.log( questions.sort((a, b) => b.date.localeCompare(a.date)) );
...