#javascript #arrays #sorting
#javascript #массивы #сортировка
Вопрос:
Я пытаюсь получить карту с несколькими массивами / вложениями, отсортированную по значению с помощью JavaScript / TypeScript.
Мой массив в настоящее время выглядит следующим образом:
let array =
[
{
classification: {
company_id: 1
},
information: {
name: 'C'
}
},
{
classification: {
company_id: 1
},
information: {
name: 'B'
}
},
{
classification: {
company_id: 1
},
information: {
name: 'A'
}
}
];
Теперь я хотел бы отсортировать по таким ['information']['name']
значениям:
let array_sorted =
[
{
classification: {
company_id: 1
},
information: {
name: 'A'
}
},
{
classification: {
company_id: 1
},
information: {
name: 'B'
}
},
{
classification: {
company_id: 1
},
information: {
name: 'C'
}
}
];
Кто-нибудь знает, как это сделать?
Я особенно борюсь с вложенными материалами…
Заранее спасибо!
Ответ №1:
Используя String.prototype.localeCompare
, вы можете сравнить строковые значения и на основе этого результата, используя Array.prototype.sort
функцию, вы можете отсортировать массивы следующим образом.
let array = [{
classification: {
company_id: 1
},
information: {
name: 'C'
}
},
{
classification: {
company_id: 1
},
information: {
name: 'B'
}
},
{
classification: {
company_id: 1
},
information: {
name: 'A'
}
}
];
const result = array.sort((a, b) => a.information.name.localeCompare(b.information.name));
console.log(result);
Ответ №2:
Вы можете использовать функцию сортировки. Это будет выглядеть так:
const array_sorted = array.sort(
(a, b) => {
if (a > b.information.name) return -1;
if (a < b.information.name) return 1;
return 0;
}, 0
)
Вы можете инвертировать порядок, поменяв местами 1 и -1. Функция сортировки принимает первый параметр функции, которая возвращает -1, 1 или 0, что обозначает порядок, и второй параметр, который задает начальное значение переменной ‘a’ (необязательно). Я установил начальное значение равным 0, именно так мне нравится использовать функцию сортировки, поскольку я думаю, что это упрощает запись