SaveLolliPoP
@SaveLolliPoP
1 / 0 = ∞

Как отсортировать массив, при этом сравнивать разные ключи?

Есть два массива:

array1 = [
  {createdDate: 1, finishedDate: 5, ...}
  ...
]

array2 = [
  {createdDate: 3, ...}
]

Это условный массив.
Мне нужно вывести все элементы этого массива в отсортированном порядке. Знаю, что можно отсортировать массив вот так:

array.sort(function(a, b) {
  return a - b;
});

В голове идея, соединить эти 2 массива и .sort придать какие то условия. Но как это сделать?
Условно пробегаясь по новому массиву, проверять есть ли у элемента заполненный finishedDate, если нет то у элемента массива сравниваем createdDate, если он заполнен, то у элемента "а" сравниваем элемент finishedDate, далее если у "b" нет finishedDate, то элемент массива а.finishedDate - b.createdDate.

Но как это реализовать?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
arr.sort((a,b) => 
  (a.hasOwnProperty("finishedDate") ? a.finishedDate : a.createdDate) 
  - 
  (b.hasOwnProperty("finishedDate") ? b.finishedDate : b.createdDate)
)
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
arr.sort((a, b) => (a.finishedDate || a.createdDate) - (b.finishedDate || b.createdDate));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы