Наиболее распространенной задачей при работе с массивами, помимо изменения его данных, является проверка его длины, обычно для того, чтобы можно было перебрать весь массив и выполнить некоторую задачу с каждым элементом.
var students = ['Sam', 'Joe', 'Sue', 'Beth'];
var suffixes = ['1st', '2nd', '3rd', '4th'];
for(var i=0; i
alert(suffixes[i]+' студент -- '+students[i]);
}
Важный момент, который необходимо знать о массивах, состоит в том, что каждый элемент массива может содержать любой произвольный объект. В этих примерах каждый элемент массива является строкой, но они могут быть также числами, объектами, функциями, даже другими массивами. Электронная таблица (такая, как Excel ) является хорошим примером массива, содержащего другие массивы. Прежде всего имеется массив столбцов. Каждый столбец будет в свою очередь содержать в себе массив строк. Этот массив создается точно таким же образом, как и массив students :
var spreadsheet = [
['A1', 'B1', 'C1', 'D1'],
['A2', 'B2', 'C2', 'D2'],
['A3', 'B3', 'C3', 'D3'],
['A4', 'B4', 'C4', 'D4']
];
Переносы строк в JavaScript обычно не имеют значения. В этом примере переносы строк используются для придания коду большей наглядности и не влияют на код никаким образом.
Можно видеть, что здесь имеется 5 массивов. Четыре внутренних массива (или вложенных массива) содержатся в одном большом массиве, spreadsheet . Если потребуется узнать значение на пересечении второго столбца и третьей строки, то можно написать:
var col2 = spreadsheet[1];
alert(col2[2]);
// или
alert(spreadsheet[1][2]);
Оба фрагмента кода делают одно и то же, выводят значение " C2 ".
Существует несколько распространенных операций, которые выполняются с массивами. Первой является добавление элемента в конец массива. Вернемся к массиву students , который содержит в данный момент 4 элемента. Чтобы добавить новый элемент, надо просто задать значение для 5-го элемента:
var students = ['Sam', 'Joe', 'Sue', 'Beth'];
students[4] = 'Mike';
students[students.length] = 'Sarah';
students.push('Steve');
// теперь массив содержит 7 элементов: ['Sam', 'Joe', 'Sue', 'Beth', 'Mike', 'Sarah', 'Steve']
Здесь также существует несколько способов для выполнения этой задачи. Первый метод, students[4] , используется редко, так как обычно неизвестно заранее в точности, сколько будет элементов. Поэтому применяется один из двух оставшихся методов. push является функцией, которая просто добавляет то, что получает, в конец массива, как и предыдущий метод, использующий свойство .length .
Не так часто, но иногда необходимо также удалить объект из массива. В этом случае задействуется функция splice , которая позволяет добавить или удалить любое количество элементов массива, но в данный момент мы собираемся использовать ее для удаления одного студента, Mike , который переехал в другой город:
var students = ['Sam', 'Joe', 'Sue', 'Beth', 'Mike', 'Sarah', 'Steve'];
students.splice(4, 1);
Splice в этом примере получает два аргумента: начальный индекс и число элементов для удаления. Так как Mike является пятым студентом, то его индекс будет 4 . Будет удален только 1 студент, поэтому здесь используется 1 . В результате имеем массив с удаленным Mike :
['Sam', 'Joe', 'Sue', 'Beth', 'Sarah', 'Steve'];
Чаще всего точно неизвестно, где в массиве находится элемент. К сожалению, единственным способом выяснить это является перебор всех элементов массива. Можно написать небольшой простой сценарий, который позволит легко добавлять или удалять студентов:
var students = ['Sam', 'Joe', 'Sue', 'Beth'];
function addStudent(name){
students.push(name);
}
function removeStudent(name){
for(var i=0; i
if(students[i].toLowerCase() == toLowerCase(name)){
students.splice(i, 1);
break;
}
}
}
Имя студента:
Добавить этого студента
Удалить этого студента
Студенты:
Единственным новым моментом здесь является слово break . break останавливает выполнение кода любого цикла, в котором находится: цикла for , цикла do или switch . Поэтому в данном случае, когда удаляемый студент найден, мы прерываем цикл for , так как выполнили свою задачу.
Часто бывает необходимо преобразовать массив в строку или строку в массив. Имеется две функции, которые могут легко это сделать: join и split . Функция join получает массив и преобразует его в строку с помощью разделителя, заданного в join . Функция split действует в обратном направлении и делает массив из строки, определяя новый элемент c помощью разделителя, заданного в split :
var myString = 'apples are good for your health';
var myArray = myString.split('a');
// строка myString разбивается на элементы на каждом найденном символе 'a'.
alert(myArray.join(', '));
Читать дальше