В этой статье описывается, как JS использует Array.prototype.sort () для сортировки объектов массива. Поделитесь этим для вашей ссылки. Конкретный анализ заключается в следующем:
Говоря об объектах сортировки массива, давайте сначала кратко поймем Array.prototype.sort (). Метод сорта принимает функцию параметра. Функция предоставит два параметра, соответственно, два элемента, которые сравниваются. Если элемент является строкой, он будет сравниваться через код Unicode. Если это число, размер значения сравнивается. Если 1 будет возвращен в функции, по сравнению, будут обменены два элемента, а 0 и -1 не будут обменены. Давайте посмотрим на пример:
Кода кода следующая: var arr = [3, 5, 2, 1];
// сортировка от маленького до большого
arr.sort (function (a, b) {
вернуть A> B? 1: -1;
});
// Результат: [1, 2, 3, 5]
Итак, вернемся к нашей теме, как мне написать ее, если я сортирую объект массива? На самом деле, принцип такой же, как и выше, например:
Скопируйте код следующим образом: var arr = [
{a: 2, b: 3.2},
{a: 3, b: 1.2},
{a: 4, b: 2.2},
{a: 6, b: 1.2},
{a: 5, b: 3.2}
]
/// Сортируется по атрибуту B от маленького до большого
arr.sort (function (x, y) {
вернуть XB> YB? 1: -1;
});
X и Y являются элементом ARR, то есть объектом, поэтому вы можете напрямую сравнить свойства двух объектов.
В приведенном выше примере есть дубликации в наименьшем элементе. Если требование: сначала сортируйте от маленького до большого в соответствии с атрибутом B, и если в самых маленьких дублированиях есть дубликации, то сортируйте по атрибуту, как мне его написать?
При сортировке, сначала сортируйте по атрибуту B. Если XB больше YB, переместите x справа от Y. Если XB равен YB, то сравните его с XA и YA. Следовательно, код выглядит следующим образом:
Скопируйте код следующим образом: arr.sort (function (x, y) {
if (xb> yb) {
возврат 1;
} else if (xb === yb) {
вернуть XA> ya? 1: -1;
} else if (xb <yb) {
возврат -1;
}
})
Я надеюсь, что эта статья будет полезна для каждого программирования JavaScript.