Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание
- Название:JavaScript. Подробное руководство, 6-е издание
- Автор:
- Жанр:
- Издательство:Символ-Плюс
- Год:2012
- Город:СПб
- ISBN:978-5-93286-215-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание краткое содержание
Эта книга - одновременно и руководство программиста, и полноценный справочник по базовому языку JavaScript и клиентским прикладным интерфейсам, предоставляемым веб-броузерами.
JavaScript. Подробное руководство, 6-е издание - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
var а = [1,2,3,4,5,6,7,8];
a.splice(4); // Вернет [5,6,7,8]; а = [1,2,3,4]
a.splice(1,2); // Вернет [2,3]; а = [1,4]
a.splice(1,1); // Вернет [4]; а = [1]
Первые два аргумента метода splice() определяют элементы массива, подлежащие удалению. За этими аргументами может следовать любое количество дополнительных аргументов, определяющих элементы, которые будут вставлены в массив, начиная с позиции, указанной в первом аргументе. Например:
var а = [1,2,3,4,5];
a.splice(2,0,'а','b'); // Вернет []; а = [1,2,’а','b',3,4,5]
a.splice(2,2, [1,2], 3); // Вернет ['a','b']; а = [1,2, [1,2],3,3,4,5]
Обратите внимание, что, в отличие от concat()
, метод splice()
вставляет массивы целиком, а не их элементы.
7.8.7. Методы push() и рор()
Методы push()
и рор()
позволяют работать с массивами как со стеками. Метод push()
добавляет один или несколько новых элементов в конец массива и возвращает его новую длину. Метод pop()
выполняет обратную операцию - удаляет последний элемент массива, уменьшает длину массива и возвращает удаленное им значение. Обратите внимание, что оба эти метода изменяют исходный массив, а не создают его модифицированную копию. Комбинация push()
и рор()
позволяет на основе массива реализовать стек с дисциплиной обслуживания «первым вошел - последним вышел». Например:
var stack = []; // стек: []
stack.push(1,2): // стек: [1,2] Вернет 2
stack.pop(); // стек: [1] Вернет 2
stack.push(3); // стек: [1,3] Вернет 2
stack.pop(); // стек: [1] Вернет 3
stack.push([4,5]); // стек: [1,[4,5]] Вернет 2
stack.рор() // стек: [1] Вернет [4,5]
stack.рор(); // стек: [] Вернет 1
7.8.8. Методы unshift() и shift()
Методы unshift()
и shift()
ведут себя почти так же, как push()
и рор()
, за исключением того, что они вставляют и удаляют элементы в начале массива, а не в конце. Метод unshift()
смещает существующие элементы в сторону больших индексов для освобождения места, добавляет элемент или элементы в начало массива и возвращает новую длину массива. Метод shift()
удаляет и возвращает первый элемент массива, смещая все последующие элементы на одну позицию вниз, чтобы занять место, освободившееся в начале массива. Например:
var а = []; // а:[]
a.unshift(1); // а:[1] Вернет: 1
a.unshift(22); // а:[22,1] Вернет: 2
a.shift(); // а:[1] Вернет: 22
a.unshift(3,[4,5]); // а:[3,[4,5],1] Вернет: 3
a.shift(); // а:[[4,5], 1 ] Вернет: 3
a.shift(); // а:[1] Вернет: [4,5]
a.shift(); // а:[] Вернет: 1
Обратите внимание на поведение метода unshift()
при вызове с несколькими аргументами. Аргументы вставляются не по одному, а все сразу (как в случае с методом splice()
). Это значит, что в результирующем массиве они будут следовать в том же порядке, в котором были указаны в списке аргументов. Будучи вставленными по одному, они бы расположились в обратном порядке.
7.8.9. Методы toString() и toLocaleString()
Массивы, как и любые другие объекты в JavaScript, имеют метод toString()
. Для массива этот метод преобразует каждый его элемент в строку (вызывая в случае необходимости методы toString()
элементов массива) и выводит список этих строк через запятую. Примечательно, что результат не включает квадратные скобки или какие-либо другие разделители вокруг значений массива. Например:
[1,2,3].toString() //Получается '1,2,3'
["а", "Ь", "с"]. toString() // Получается а,Ь,с'
[1, [2, 'с']].toString() //Получается '1,2,с'
Обратите внимание, что toString()
возвращает ту же строку, что и метод join()
при вызове его без аргументов.
Метод toLocaleString()
- это локализованная версия toString().
Каждый элемент массива преобразуется в строку вызовом метода toLocaleString()
элемента, а затем полученные строки объединяются с использованием специфического для региона (и определяемого реализацией) разделителя.
7.9. Методы класса Array, определяемые стандартом ECMAScript 5
Стандарт ECMAScript 5 определяет девять новых методов массивов, позволяющих выполнять итерации, отображение, фильтрацию, проверку, свертку и поиск. Все эти методы описываются в следующих далее подразделах.
Однако, прежде чем перейти к изучению особенностей, следует сделать некоторые обобщения, касающиеся методов массивов в ECMAScript 5. Во-первых, большинство описываемых ниже методов принимают функцию в первом аргументе и вызывают ее для каждого элемента (или нескольких элементов) массива. В случае разреженных массивов указанная функция не будет вызываться для несуществующих элементов. В большинстве случаев указанной функции передаются три аргумента: значение элемента массива, индекс элемента и сам массив. Чаще всего вам необходим будет только первый аргумент, а второй и третий аргументы можно просто игнорировать. Большинство методов массивов, введенных стандартом ECMAScript 5, которые в первом аргументе принимают функцию, также принимают второй необязательный аргумент. Если он указан, функция будет вызываться, как если бы она была методом этого второго аргумента. То есть второй аргумент будет доступен функции, как значение ключевого слова this
. Значение, возвращаемое функцией, играет важную роль, но разные методы обрабатывают его по-разному. Ни один из методов массивов, введенных стандартом ECMAScript 5, не изменяет исходный массив. Разумеется, функция, передаваемая этим методам, может модифицировать исходный массив.
7.9.1. Метод forEach()
Метод forEach()
выполняет обход элементов массива и для каждого из них вызывает указанную функцию. Как уже говорилось выше, функция передается методу forEach()
в первом аргументе. При вызове этой функции метод forEach()
будет передавать ей три аргумента: значение элемента массива, индекс элемента и сам массив. Если вас интересует только значение элемента, можно написать функцию с одним параметром - дополнительные аргументы будут игнорироваться:
var data = [1,2,3,4,5]; // Массив, элементы которого будут суммироваться
// Найти сумму элементов массива
var sum =0; // Начальное значение суммы 0
data.forEach(function(value) { sum += value; }); // Прибавить значение к sum
sum // => 15
// Увеличить все элементы массива на 1
Интервал:
Закладка: