• 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


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

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

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