JavaScript: Массивы

JavaScriptКомментариев нет

Методы и свойства

Ниже будут перечислены некоторые методы и свойства массивов в javascript. Заранее договоримся что у нас объявлена переменная arr и для нее или у нее будем вызывать методы/свойства.

// объявим массив
var arr = ["Огурец", "Кабачок", "Тыква"];

arr.length — возвращает общее число элементов в массиве. Тут есть нюанс, данный параметр возвращает не совсем количество элементов, а последний индекс + 1. Например:

// length
var arr = [];
arr[1000] = true;
alert(arr.length); // 1001

arr.pop() — удаляет последний элемент в массиве и возвращает его индекс.

arr.push(«Помидор») — добавляет элемент в конец массива. Можно добавлять несколько элементов сразу:

// добавление элемента
var fruits = ["Яблоко"];
fruits.push("Апельсин", "Персик");

arr.shift() — удаляет первый элемент из массива и возвращает его(работает медленней чем arr.pop()).

arr.unshift(«Помидор») — добавляет элемент в начало массива(работает медленней чем arr.push()) и возвращает его индекс. Можно добавлять несколько элементов сразу:

// добавление элемента
var fruits = ["Яблоко"];
fruits.unshift("Ананас", "Лимон");

arr.split(‘разделитель’,  long) — делает из строки — массив. Строка разбивается по разделителю, который указывается первым параметром(‘разделитель’). Так же у функции есть второй не обязательный аргумент long, который задает длину нового массива.

arr.join(‘разделитель’) — делает из массива — строку, слов(элементы массива)а в которой будет разделены с помощью разделителя.

delete arr[i] — удаляем элемент массива(как в объекте, массив — это объект). Минус — образуется пробел, индексы не пересчитываются, поэтому лучше использовать метод splice.

arr.splice(index[, deleteCount, elem1, …, elemN]) — splice может удалять, добавлять и заменять элементы массива. Логика работы следующая: удалить deleteCount элементов, начиная с номера index, а затем вставить elem1, …, elemN на их место. Возвращает массив из удалённых элементов.

var arr = ["Я", "изучаю", "JavaScript"];

arr.splice(1, 1); // осталось ["Я", "JavaScript"]
arr.splice(0, 3, "Мы", "изучаем"); // теперь ["Мы", "изучаем", "JavaScript"]
var removed = arr.splice(0, 2); // "Я", "сейчас" <-- array of removed elements
arr.splice(2, 0, "сложный", "язык"); // "Я", "изучаю", "сложный", "язык", "JavaScript"

var arr = [1, 2, 5]
arr.splice(-1, 0, 3, 4); // результат: 1,2,3,4,5

arr.slice(begin, end) — данный метод копирует часть массива начиная с begin и заканчивая end(не включая последний элемент). Функция работает аналогичным образом как в строках. Если не указывать параметры — копируется весь массив.

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

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

arr.indexOf(value) — возвращает индекс элемента массива, если его значение равно value(первое совпадение). Поиск осуществляется с 0(можно указать 2й параметр fromIndex и поиск будет осуществлен с указанной позиции) элемента. Если элемент не найден возвращается -1.

arr.lastIndexOf(value) — возвращает индекс элемента массива, если его значение равно value(первое совпадение). Поиск осуществляется с последнего(можно указать 2й параметр fromIndex и поиск будет осуществлен с указанной позиции) элемента. Если элемент не найден возвращается -1.

Метод Array.isArray()

Для проверки типа на массив есть специальный метод: Array.isArray(arr). Он возвращает true только если arr – массив:

// проверка на массив

alert( Array.isArray([1,2,3]) ); // true
alert( Array.isArray("not array")); // false

Сортировка

arr.sort() — сортирует массив, по умолчанию все значения массива приравниваются к строкам и сортируются. Функция позволяет использовать свой порядок сортировки.

// стандартная сортировка
var arr = [ 1, 2, 15 ];
arr.sort();
alert( arr );  // 1, 15, 2

// своя сортировка
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

Своя функция сортировки должна возвращать положительное число/отрицательное число/ноль.

arr.filter(callback) — фильтрует массив с помощью функции callback(item, i, arr), оставляя только те значения, для которых функция возвращает true.

var arr = [1, -1, 2, -2, 3];

var positiveArr = arr.filter(function(number) {
  return number > 0;
});

alert( positiveArr ); // 1,2,3

arr.map(callback) — создает новый массив, в котором все элементы arr буду обработаны функцией callback(item, i, arr)

var names = ['HTML', 'CSS', 'JavaScript'];

var nameLengths = names.map(function(name) {
  return name.length;
});

// получили массив с длинами
alert( nameLengths ); // 4,3,10

arr.every(callback) — возвращает true если callback вернет true для каждого элемента.

arr.some(callback) — возвращает true если callback вернет true хотя бы для одного элемента массива.

var arr = [1, -1, 2, -2, 3];

function isPositive(number) {
  return number > 0;
}

alert( arr.every(isPositive) ); // false, не все положительные
alert( arr.some(isPositive) ); // true, есть хоть одно положительное

arr.reduce(callback) — используется для последовательной обработки элементов массива с сохранение промежуточного результата. Функция callback(previousValue, currentItem, index, arr) = callback(промежуточный результат, текущий элемент массива, итератор, массив).

arr.reduceRight(callback) — работает также как и  arr.reduce(callback), только обходит массив с права на лева.

var arr = [1, 2, 3, 4, 5]

// для каждого элемента массива запустить функцию,
// промежуточный результат передавать первым аргументом далее
var result = arr.reduce(function(sum, current) {
  return sum + current;
}, 0);

alert( result ); // 15

 

Работа с массивами в javascript

Перебор элементов циклом FOR

// цикл for
var arr = ["Яблоко", "Апельсин", "Груша"];

for (var i = 0; i < arr.length; i++) {
  alert( arr[i] );
}

Не используйте for..in для массивов! Он работает медленней + выводит скрытые свойства объекта.

forEach

Метод forEach ничего не возвращает, его используют только для перебора, как более «элегантный» вариант, чем обычный цикл for.

var arr = ["Яблоко", "Апельсин", "Груша"];

arr.forEach(function(item, i, arr) { // item - элемент массива, i - итератор, arr - массив
  alert( i + ": " + item + " (массив:" + arr + ")" );
});

 

Трюки

Укорачиваем(обрезаем) массив

Если изменить значение length, то данные с индексами больше нового значения — удаляются. Например:

// обрезаем массив
var arr = [1, 2, 3, 4, 5];

arr.length = 2; // укоротить до 2 элементов
alert( arr ); // [1, 2]

arr.length = 5; // вернуть length обратно, как было
alert( arr[3] ); // undefined: значения не вернулись

Повторение строки 3 раза:

alert( new Array(4).join("ля") ); // ляляля

 

Источник:

https://learn.javascript.ru/array


Будь первым кто прокомментирует статью.

Добавить комментарий

Войти с помощью: