Skip to content

Instantly share code, notes, and snippets.

@alinastorm
Last active January 27, 2019 17:07
Show Gist options
  • Save alinastorm/6545a7c6463b2549eb49be5f3f3defc5 to your computer and use it in GitHub Desktop.
Save alinastorm/6545a7c6463b2549eb49be5f3f3defc5 to your computer and use it in GitHub Desktop.
Объекты - Массивы- Методы: slice, sort, reverse, concat

slice(begin, end) копирует участок массива от begin до end, не включая end. Исходный массив при этом не меняется.

Например:

var arr = ["Почему", "надо", "учить", "JavaScript"];

var arr2 = arr.slice(1, 3); // элементы 1, 2 (не включая 3)

alert( arr2 ); // надо, учить Аргументы ведут себя так же, как и в строковом slice:

Если не указать end – копирование будет до конца массива:

var arr = ["Почему", "надо", "учить", "JavaScript"];

alert( arr.slice(1) ); // взять все элементы, начиная с номера 1 Можно использовать отрицательные индексы, они отсчитываются с конца:

var arr2 = arr.slice(-2); // копировать от 2-го элемента с конца и дальше Если вообще не указать аргументов – скопируется весь массив:

var fullCopy = arr.slice(); Совсем как в строках Синтаксис метода slice одинаков для строк и для массивов. Тем проще его запомнить.

sort(fn) Метод сортирует массив на месте

"var arr = [ 1, 2, 15 ];

arr.sort();

alert( arr ); // 1, 15, 2"

сортирует, преобразуя элементы к строке. Поэтому и порядок у них строковый, ведь "2" > "15"

Для указания своего порядка сортировки в метод arr.sort(fn) нужно передать функцию fn от двух элементов, которая умеет сравнивать их. "function compareNumeric(a, b) { if (a > b) return 1; if (a < b) return -1; }

var arr = [ 1, 2, 15 ];

arr.sort(compareNumeric);

alert(arr); // 1, 2, 15" Внутренний алгоритм функции сортировки умеет сортировать любые массивы – апельсинов, яблок, пользователей, и тех и других и третьих – чего угодно. Но для этого ему нужно знать, как их сравнивать. Эту роль и выполняет fn. Обратите внимание, мы передаём в sort() именно саму функцию compareNumeric, без вызова через скобки. arr.sort( compareNumeric() ); // не сработает - ошибкой будет такой код функция, передаваемая sort, должна иметь два аргумента Алгоритм сортировки, будет передавать ей для сравнения элементы массива. Она должна возвращать: Положительное значение, если a > b, Отрицательное значение, если a < b, "function compareNumeric(a, b) { return a - b; }" Функцию для сравнения элементов-чисел можно упростить до одной строчки.

" например: use strict;

let arr = [5, 8, 3];

let sorted = arr.sort( (a,b) => a - b );

alert(sorted); // 3, 5, 8" Функции-стрелки очень удобны в качестве коллбеков

arr.reverse() Метод меняет порядок элементов в массиве на обратный

"var arr = [1, 2, 3]; arr.reverse();

alert( arr ); // 3,2,1"

concat

"var arr = [1, 2]; var newArr = arr.concat(3, 4);

alert( newArr ); // 1,2,3,4" Метод arr.concat(value1, value2, … valueN) создаёт новый массив, в который копируются элементы из arr, а также value1, value2, ... valueN.

"var arr = [1, 2]; var newArr = arr.concat([3, 4], 5); // то же самое, что arr.concat(3,4,5)

alert( newArr ); // 1,2,3,4,5" Есть одна особенность Если аргумент concat – массив, то concat добавляет элементы из него.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment