ЛУЧШИЙ САЙТ ДЛЯ РАЗРАБОТЧИКОВ
×

JavaScript учебник

JS HOME JS Introduction JS Where To JS Output JS Statements JS Syntax JS Comments JS Variables JS Operators JS Arithmetic JS Assignment JS Data Types JS Functions JS Objects JS Scope JS Events JS Strings JS String Methods JS Numbers JS Number Methods JS Arrays JS Array Methods JS Array Sort JS Array Iteration JS Dates JS Date Formats JS Date Get Methods JS Date Set Methods JS Math JS Random JS Booleans JS Comparisons JS Conditions JS Switch JS Loop For JS Loop While JS Break JS Type Conversion JS Bitwise JS RegExp JS Errors JS Debugging JS Hoisting JS Strict Mode JS this Keyword JS Style Guide JS Best Practices JS Mistakes JS Performance JS Reserved Words JS Versions JS Version ES5 JS Version ES6 JS JSON

JS Forms

JS Forms Forms API

JS Objects

Object Definitions Object Properties Object Methods Object Constructors Object Prototypes

JS Functions

Function Definitions Function Parameters Function Invocation Function Call Function Apply Function Closures

JS HTML DOM

DOM Intro DOM Methods DOM Document DOM Elements DOM HTML DOM CSS DOM Animations DOM Events DOM Event Listener DOM Navigation DOM Nodes DOM Collections DOM Node Lists

JS Browser BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS AJAX

AJAX Intro AJAX XMLHttp AJAX Request AJAX Response AJAX XML File AJAX PHP AJAX ASP AJAX Database AJAX Applications

JS JSON

JSON Intro JSON Syntax JSON vs XML JSON Data Types JSON Objects JSON Arrays JSON Parse JSON Stringify JSON PHP JSON HTML JSON JSONP

JS References

JavaScript Objects HTML DOM Objects


массивы сортировки JavaScript


Сортировка массива

Метод Sort () сортирует массив по алфавиту:

Пример

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();        // Sorts the elements of fruits

Обращение к массиву

Метод Reverse () изменяет элементы массива на обратный.

Его можно использовать для сортировки массива в порядке убывания:

Пример

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();        // First sort the elements of fruits
fruits.reverse();     // Then reverse the order of the elements

Числовая сортировка

По умолчанию функция Sort () сортирует значения в виде строк.

Это хорошо работает для струнных ("яблоко" приходит перед "банан").

Однако, если числа сортируются как строки, "25" больше, чем "100", так как "2" больше, чем "1".

По этой причине метод Sort () будет давать неверный результат при сортировке чисел.

Это можно исправить, предоставив функцию сравнения:

Пример

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});

Используйте тот же трюк, чтобы сортировать массив по убыванию:

Пример

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});


Функция сравнения

Назначение функции Compare заключается в определении альтернативного порядка сортировки.

Функция Compare должна возвращать отрицательное, нулевое или положительное значение в зависимости от аргументов:

function(a, b){return a-b}

Когда функция Sort () сравнивает два значения, она отправляет значения в функцию Compare и сортирует значения в соответствии с возвращаемым (отрицательным, нулевым, положительным) значением.

Примере:

При сравнении 40 и 100 метод Sort () вызывает функцию Compare (40100).

Функция вычисляет 40-100 и возвращает-60 (отрицательное значение).

Функция сортировки будет сортировать 40 как значение ниже 100.

Этот фрагмент кода можно использовать для экспериментов с сортировкой по числу и по алфавиту:

<button onclick="myFunction1()">Sort Alphabetically</button>
<button onclick="myFunction2()">Sort Numerically</button>

<p id="demo"></p>

<script>
var points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;

function myFunction1() {
    points.sort();
    document.getElementById("demo").innerHTML = points;
}
function myFunction2() {
    points.sort(function(a, b){return a - b});
    document.getElementById("demo").innerHTML = points;
}
</script>

Сортировка массива в произвольном порядке

Пример

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 - Math.random()});


Найти наибольшее (или наименьшее) значение массива

Нет встроенных функций для поиска максимального или минимального значения в массиве.

Однако после сортировки массива можно использовать индекс для получения максимальных и наименьших значений.

Сортировка по возрастанию:

Пример

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value

Сортировка по убыванию:

Пример

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value

Сортировка всего массива является очень неэффективным методом, если вы хотите найти только самое высокое (или наименьшее) значение.


Использование Math. max () в массиве

Вы можете использовать Math. max. Apply для поиска наибольшего числа в массиве:

Пример

function myArrayMax(arr) {
    return Math.max.apply(null, arr);
}

Math.max.apply([1, 2, 3]) is equivalent to Math.max(1, 2, 3).


Использование Math. min () в массиве

Для поиска наименьшего числа в массиве можно использовать Math. min.:

Пример

function myArrayMin(arr) {
    return Math.min.apply(null, arr);
}

Мат. мин. Нанесите ([1, 2, 3]) эквивалентно математике. min (1, 2, 3).


Мои минимальные/максимальные методы JavaScript

Самое быстрое решение заключается в использовании "домашний" метод.

Эта функция выполняет циклический перебор по массиву, сравнивая каждое значение с максимальным найденным значением:

Пример (найти Макс.)

function myArrayMax(arr) {
    var len = arr.length
    var max = -Infinity;
    while (len--) {
        if (arr[len]> max) {
            max = arr[len];
        }
    }
    return max;
}

Эта функция выполняет циклический перебор массива, сравнивая каждое значение с наименьшим найденным значением:

Пример (найти мин.)

function myArrayMin(arr) {
    var len = arr.length
    var min = Infinity;
    while (len--) {
        if (arr[len] <min) {
            min = arr[len];
        }
    }
    return min;
}


Сортировка массивов объектов

Массивы JavaScript часто содержат объекты:

Пример

var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}];

Даже если объекты имеют свойства различных типов данных, метод Sort () можно использовать для сортировки массива.

Решение состоит в том, чтобы написать функцию сравнения для сравнения значений свойств:

Пример

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

Сравнение строковых свойств немного сложнее:

Пример

 cars.sort(function(a, b){
    var x = a.type.toLowerCase();
    var y = b.type.toLowerCase();
    if (x <y) {return -1;}
    if (x> y) {return 1;}
    return 0;
});