Массивы JavaScript
- Предыдущая страница Целые числа JS свойства
- Следующая страница Методы массива JS
JavaScript 数组用于在单一变量中存储多个值。
什么是数组?
数组是一种特殊的变量,它能够一次存放一个以上的值。
如果您有一个项目清单(例如,汽车品牌列表),在单个变量中存储汽车品牌应该是这样的:
var car1 = "Saab"; var car2 = "Volvo"; var car3 = "BMW";
不过,假如您希望遍历所有汽车并找到一个特定的值?假如不是三个汽车品牌而是三百个呢?
解决方法就是数组!
数组可以用一个单一的名称存放很多值,并且还可以通过引用索引号来访问这些值。
创建数组
使用数组文本是创建 JavaScript 数组最简单的方法。
语法:
var array-name = [item1, item2, ...];
Пример
var cars = ["Saab", "Volvo", "BMW"];
空格和折行并不重要。声明可横跨多行:
Пример
var cars = [ "Saab", "Volvo", "BMW"
Не пишите запятую после последнего элемента (например, "BMW",).
Может быть проблема с совместимостью между браузерами.
Использование ключевого слова JavaScript new
Следующий пример также создает массив и assigns к нему значения:
Пример
var cars = new Array("Saab", "Volvo", "BMW");
Эти два примера имеют одинаковый эффект. Не нужно использовать new Array()
.
Для краткости, читаемости и скорости выполнения рекомендуется использовать первый метод (метод текста массива).
доступ к элементам массива
Мы используем ссылкуИндекс (нижний индекс)для ссылки на элемент массива.
Эта строка доступа к значению первого элемента в cars:
var name = cars[0];
Эта строка изменяет первый элемент в cars:
cars[0] = "Opel";
Пример
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars[0];
[0] является первым элементом массива. [1] является вторым. Индексация начинается с 0.
Изменение элементов массива
Эта строка изменяет значение первого элемента в cars:
cars[0] = "Opel";
Пример
var cars = ["Saab", "Volvo", "BMW"]; cars[0] = "Opel"; document.getElementById("demo").innerHTML = cars[0];
Доступ к полному массиву
Через JavaScript, вы можете получить доступ к полному массиву по имени массива:
Пример
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars;
Массивы являются объектами
Массивы - это особый тип объектов. В JavaScript используется typeof
Операторы возвращают "object".
Однако, лучше всего описывать JavaScript-массивы как массивы.
Использование массивачислачтобы получить доступ к его "элементам". В данном примере,person[0]
Возврат Bill:
Массив:
var person = ["Bill", "Gates", 62];
Объекты используютИмячтобы получить доступ к его "членам". В данном примере,person.firstName
Возврат Bill:
Объект:
var person = {firstName:"Bill", lastName:"Gates", age:19};
Элементы массива могут быть объектами
Переменные JavaScript могут быть объектами. Массивы - это особый тип объектов.
Благодаря этому, вы можете хранить в одном массиве переменные различных типов.
Вы можете хранить объекты в массиве. Вы можете хранить функции в массиве. Вы даже можете хранить массивы в массиве:
myArray[0] = Date.now; myArray[1] = myFunction; myArray[2] = myCars;
Свойства и методы массива
Истинная сила JavaScript-массивов скрыта в свойствах и методах массивов:
Пример
var x = cars.length; // Свойство length возвращает количество элементов var y = cars.sort(); // Метод sort() сортирует массив
Мы изучим методы массивов в следующей главе.
Свойство length
length
Свойство возвращает длину массива (количество элементов массива).
Пример
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.length; // Длина массива fruits составляет 4
length
Свойство всегда больше максимального индекса массива (индекса).
Доступ к первому элементу массива
Пример
fruits = ["Banana", "Orange", "Apple", "Mango"]; var first = fruits[0];
Доступ к последнему элементу массива
Пример
fruits = ["Banana", "Orange", "Apple", "Mango"]; var last = fruits[fruits.length - 1];
пройтись по элементам массива
Наиболее безопасный способ遍历 массив - это использование "for
"Цикл:"
Пример
var fruits, text, fLen, i; fruits = ["Banana", "Orange", "Apple", "Mango"]; fLen = fruits.length; text = "<ul>"; for (i = 0; i < fLen; i++) { text += "<li>" + fruits[i] + "</li>"; }
Вы также можете использовать Array.foreach()
Функция:
Пример
var fruits, text; fruits = ["Banana", "Orange", "Apple", "Mango"]; text = "<ul>"; fruits.forEach(myFunction); text += "</ul>"; function myFunction(value) { text += "<li>" + value + "</li>"; }
Добавление элементов массива
Лучшим способом добавить новый элемент в массив является использование push()
Методы:
Пример
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.push("Lemon"); // Добавление нового элемента (Lemon) в fruits
También se puede utilizar length
Добавление нового элемента в массив:
Пример
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[fruits.length] = "Lemon"; // Добавление нового элемента (Lemon) в fruits
Внимание!
Добавление элемента с наибольшим индексом может создать в массиве неопределенные "дыры":
Пример
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[6] = "Lemon"; // Добавление нового элемента (Lemon) в fruits
Связанные массивы
Многие элементы программирования поддерживают массивы с именованными индексами.
Массивы с именованными индексами называются связанными массивами (или хешами).
JavaScript Поддержкаименоваными индексами.
В JavaScript массивы можно использовать только счисловые индексы.
Пример
var person = []; person[0] = "Bill"; person[1] = "Gates"; person[2] = 62; var x = person.length; // person.length возвращает 3 var y = person[0]; // person[0] возвращает "Bill"
Внимание!
Если вы используете именованные индексы, JavaScript будет переопределять массив в стандартный объект.
После этого, все методы и свойства массивов будут генерировать неправильные результаты.
Пример:
var person = []; person["firstName"] = "Bill"; person["lastName"] = "Gates"; person["age"] = 62; var x = person.length; // person.length вернет 0 var y = person[0]; // person[0] вернет undefined
Разница между массивами и объектами
в JavaScript,Массивиспользоватьчисловые индексы.
в JavaScript,объектиспользоватьименованные индексы.
Массивы являются особого типа объектами, имеющими числовые индексы.
Когда использовать массив, когда использовать объект?
- JavaScript не поддерживает связанные массивы
- Если вы хотите, чтобы имена элементов былистрока (текст)в этом случае следует использоватьобъект.
- Если вы хотите, чтобы имена элементов быличислав этом случае следует использоватьМассив.
Избегайте new Array()
Нет необходимости использовать встроенный конструктор массивов JavaScript new Array()
.
Используйте []
Вместо этого!
Ниже приведены два различных выражения, создающие новый пустой массив под именем points:
var points = new Array(); // Плохая практика var points = []; // Лучшая практика
Ниже приведены два различных выражения, создающие новый массив из шести чисел:
var points = new Array(40, 100, 1, 5, 25, 10); // Плохая практика var points = [40, 100, 1, 5, 25, 10]; // Лучшая практика
new
Ключевые слова могут усложнить код. Они также могут привести к некоторым неожиданным результатам:
var points = new Array(40, 100); // Создает массив с двумя элементами (40 и 100)
Что会发生, если удалить один из элементов?
var points = new Array(40); // Создает массив с 40 неопределенными элементами!!!
Как определить массив
Часто встречающийся вопрос: как узнать, является ли переменная массивом?
Проблема заключается в операторе JavaScript typeof
возвращает "объект
":
var fruits = ["Banana", "Orange", "Apple", "Mango"]; typeof fruits; // Возвращает object
Оператор typeof возвращает "объект", так как массив JavaScript является объектом.
Решение 1:
Чтобы решить эту проблему, ECMAScript 5 определил новый метод Array.isArray()
:
Array.isArray(fruits); // возвращает true
Проблема этого решения заключается в ECMAScript 5 Не поддерживает старые браузеры.
Решение 2:
Создайте свою isArray()
Функция решает эту проблему:
function isArray(x) { return x.constructor.toString().indexOf("Array") > -1; }
Если аргумент является массивом, то функция всегда возвращает true.
或者更准确的解释是: если объект прототип содержит слово "Array", то возвращает true.
Решение 3:
Если объект создан с помощью данного конструктора, то instanceof Оператор возвращает true:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits instanceof Array // возвращает true
- Предыдущая страница Целые числа JS свойства
- Следующая страница Методы массива JS