Объекты и массивы
var shopping = ['beetroot', 'carrots', 'eggs', 'milk']
Массивы
var shopping = [
'beetroot',
'carrots',
'eggs',
'milk'
]
Объявление
var shopping = []
var shopping = ['beetroot', 'carrots', 'eggs', 'milk'];
alert( shopping[0] ); // beetroot
alert( shopping[1] ); // carrots
alert( shopping[2] ); // eggs
Работа с массивами
Элементы нумеруются, начиная с нуля.
var shopping = ['beetroot', 'carrots', 'eggs', 'milk'];
shopping[1] = 'potato';
var shopping = ['beetroot', 'carrots', 'eggs', 'milk'];
alert( shopping ); // 'beetroot', 'carrots', 'eggs', 'milk'
Через alert можно вывести и массив целиком.
var shopping = ['beetroot', 'carrots', 'eggs', 'milk'];
alert( fruits.length ); // 4
Общее число элементов, хранимых в массиве, содержится в его свойстве length:
var a = [];
a[0] = 0;
a[5] = 5;
alert( a ); // 0,,,,,5
Массив с «дырами»
alert(arr.length); // 6
Длина length – не количество элементов массива, а последний индекс + 1.
var arr = [
'beetroot',
{ name: 'Alex' },
2,
true
]
В массиве может храниться любое число элементов любого типа.
var numbers = [1, 2, 3, 4, 5, 6];
numbers[ numbers.length ] = 7; // [1, 2, 3, 4, 5, 6, 7]
Добавления элементов в массив
var numbers = [1, 2, 3, 4, 5, 6];
numbers.push( 7 ); // в конец
numbers.push( 7, 8, 9 );
numbers.unshift( 0 ); // в начало
Методы push() и unshift()
Удаление элементов из массива
var numbers = [1, 2, 3, 4, 5, 6];
var lastItem = numbers.pop(); // 6
var firstItem = numbers.shift(); // 0
Методы pop() и shift()
Удаляют и возвращают элементы массива
Перебор элементов из массива
var students = [
'Alex',
'Sasha',
'Ira',
'Nika'
];
for (var i = 0; i < students.length; i++) {
console.log(students[i]);
}
Создадим функцию, которая выводит плейлист
var playList = [
'I Did It My Way',
'Respect',
'Imagine',
'Born to Run',
'Louie Louie',
'Maybellene'
];
function print(message) {
document.write(message);
}
Полезные методы для работы с Массивами
join() - массив в строку
var students = [
'Alex',
'Sasha',
'Ira',
'Nika'
];
var studentsString = students.join(', ');
console.log(studentsString);
// Alex, Sasha, Ira, Nika
split() - строка в массив
var studentsString = 'Alex, Sasha, Ira, Nika';
var students = studentsString.split(', ');
console.log(students);
concat() - объединение массивов
var currentStudents = ['Alex', 'Sasha', 'Ira'];
var newStudents = ['Nika', 'Gustav'];
var allStudents = currentStudents.concat( newStudents );
console.log(allStudents);
indexOf() - поиск в массиве
var currentStudents = ['Alex', 'Sasha', 'Ira'];
var position = currentStudents.indexOf( 'Ira' ); // 2
position = currentStudents.indexOf( 'Nika' ); // -1
var students = ['Alex', 'Sasha', 'Ira'];
delete students[1]; // значение с индексом 1 удалено
// теперь students = ['Alex', undefined, 'Ira'];
Удаление из массива
arr.splice(index[, deleteCount, elem1, ..., elemN])
var students = ['Alex', 'Sasha', 'Ira'];
students.splice(1, 1); // начиная с позиции 1, удалить 1 элемент
// удалить 2 первых элемента и добавить другие вместо них
students.splice(0, 2, "Nika", "Olya");
Еще методы
var matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
alert( matrix[1][1] ); // центральный элемент
Многомерные массивы
var student = {
name: "Dave",
grades: [80, 85, 90],
beetrootStudent: true
};
var person = {};
Объекты
var student = {
name: "Dave",
age: 25
};
alert(student['name']);
alert(student.name);
работа с Объектами
student.name = "Alex"; // Изменить
student.grades = [80, 85, 90]; // добавить
var person = {
name : 'Alex',
country : 'UA',
age : 29,
beetrootTeacher : true,
skills : ['JavaScript', 'HTML', 'CSS']
};
function print(message) {
var div = document.getElementById('output');
div.innerHTML = message;
}
Разберем на примере
var person = {
name : 'Alex',
country : 'UA',
age : 29,
beetrootTeacher : true,
skills : ['JavaScript', 'HTML', 'CSS']
};
for ( var key in person ){
console.log(key); // ключ
console.log(person[key]); // значение
console.log(person.key); // не сработает
// прикольная фича
console.log(key, ':', person[key]);
}
Перебор свойств
var codes = {
// телефонные коды в формате "код страны": "название"
"46": "Швеция",
"1": "США",
"38": "Украина"
};
var person = {
name : 'Alex',
country : 'UA',
age : 29,
beetrootTeacher : true,
skills : ['JavaScript', 'HTML', 'CSS']
};
for ( var key in codes ){
console.log(key, ':', codes[key]);
}
В каком порядке перебираются свойства?
// обычные переменные
var message = "Привет";
var phrase = message;
// Объекты
var person = {
name : 'Alex',
country : 'UA',
age : 29,
beetrootTeacher : true,
skills : ['JavaScript', 'HTML', 'CSS']
};
var evilClone = person;
Объекты: передача по ссылке
В переменной, которой присвоен объект, хранится не сам объект, а «адрес его места в памяти», иными словами – «ссылка» на него.
var person = {
name : 'Alex',
country : 'UA',
age : 29,
beetrootTeacher : true,
skills : ['JavaScript', 'HTML', 'CSS']
};
var evilClone = {}; // пустой
// скопируем в него все свойства person
for (var key in person) {
evilClone[key] = person[key];
}
Объекты: клонирование
Итого
Массивы записываются через [], Объекты - {};
Доступ к элементам массива осуществляется через числовой индекс:
var arr = [1, 2, 3]
arr[0] = 10;
Объекты – это ассоциативные массивы с дополнительными возможностями:
- Доступ к элементам осуществляется:
- Напрямую по ключу obj.prop = 5
- Через переменную, в которой хранится ключ:
var key = "prop";
obj[key] = 5
- Удаление ключей: delete obj.name.
- Существование свойства может проверять оператор in:
if ("prop" in obj), как правило, работает и просто сравнение
if (obj.prop !== undefined)
JavaScript - Объекты и массивы
By Alexey Kalyuzhnyi
JavaScript - Объекты и массивы
- 2,690