Как отсортировать индекс вложенного массива по определенному ключу? - PullRequest
0 голосов
/ 26 октября 2019

У меня есть вложенный массив, который состоит из следующей структуры:

arr: Array(2)
  0: [id: 1, area: 111, area_str: "111,00 m²"]
  1: [id: 2, area: 555, area_str: "555,00 m²"]

Я пытаюсь отсортировать целые вложенные массивы на основе данного ключа и его соответствующего значения. Так, например, когда предоставленный ключ является «областью», тогда вложенные элементы с индексами 0 и 1 должны быть переупорядочены в целом в соответствии с результатом сортировки, который вычисляется путем сравнения значений данного ключа.

Ссылаясь на этот пример, желаемый результат должен выглядеть следующим образом:

arr: Array(2)
  0: [id: 2, area: 555, area_str: "555,00 m²"]
  1: [id: 1, area: 111, area_str: "111,00 m²"]

Механизм сортировки должен работать как в порядке возрастания, так и в порядке убывания. Я уже пытался использовать функцию sort (), но нашел только примеры для сортировки ключей или значений в ОДНОМ массиве, а не для сортировки вложенных подмассивов путем изменения их позиции индекса.

Я был бы радесли бы вы могли дать мне несколько советов о том, как этого можно достичь. Заранее спасибо!

1 Ответ

2 голосов
/ 26 октября 2019

Вот небольшой пример, как отсортировать массив объектов:

let array = [
  {id: 1, area: 555, area_str: "111,00 m²"},
  {id: 2, area: 111, area_str: "555,00 m²"},
  {id: 3, area: 333, area_str: "333,00 m²"}
]

function sortArray(array, property, isDescending) {
  if(isDescending) {
    array.sort((a,b) => (a[property] > b[property] ? -1 : 1 ));
  } else {
    array.sort((a,b) => (a[property] > b[property] ? 1 : -1 ));
  }
}

sortArray(array, 'id', true);
console.log(array);
sortArray(array, 'area', false);
console.log(array);
...