При работе с массивами данных, одна из наиболее частых задач — сортировка. Стандартную сортировку по одному ключу при помощи метода «.sort» я рассматривать не буду — там все просто и тривиально. Я хочу привести пример, как делать сортировку массива по нескольким ключам — например нам нужно отрендерить табличку, где люди будут отсортированы по возрасту, а внутри одной возрастной группы фамилии должны идти по алфавиту.
var arr = [ { name: "Andy", surname: "Orlov", age: 14 }, { name: "Andy", surname: "Ivanov", age: 15 }, { name: "Bob", surname: "Akopyan", age: 25 }, { name: "Han", surname: "Solo", age: 65 } ]; arr.sort(function(a, b) { // ascending\descending will be changed if you replace "<" to ">" return (b.name.toLowerCase() < a.name.toLowerCase()) - (a.name.toLowerCase() < b.name.toLowerCase()) || // sort by name (b.surname.toLowerCase() < a.surname.toLowerCase()) - (a.surname.toLowerCase() < b.surname.toLowerCase()) || // sort by surname (b.age.toLowerCase() < a.age.toLowerCase()) - (a.age.toLowerCase() < b.age.toLowerCase()); // sort by age }); console.log(arr);
Как видите, ничего сложного, количество ключей может быть бесконечным. Единственное, не забывайте применять метод toLowerCase(), иначе сортировка будет работать некорректно. Чтобы поменять порядок сортировки на обратный - просто поменяйте знак "<" на ">" и наоборот.