Сейчас мы с вами разберем некоторые приемы при работе с обычными и многомерными массивами. Давайте приступим.

Заполнение массивов

Давайте заполним массив десятью иксами 'x'. Для этого воспользуемся методом push:

var arr = [];
for (var i = 0; i < 10; i++) {
	arr.push('x');
}

console.log(arr); //выведет ['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x']

Давайте теперь заполним массив числами от 1 до 10:

var arr = [];
for (var i = 1; i <= 10; i++) {
	arr.push(i);
}

console.log(arr); //выведет [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Можно не использовать push, а указать ключи напрямую:

var arr = [];
for (var i = 0; i < 10; i++) {
	arr[i] = 'x';
}

console.log(arr); //выведет ['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x']
var arr = [];
for (var i = 0; i < 10; i++) {
	arr[i] = i + 1;
}

console.log(arr); //выведет [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Переворот массива

Давайте из массива ['a', 'b', 'c', 'd', 'e'] сделаем ['e', 'd', 'c', 'b', 'a']. Для этого переберем исходный массив с конца и запишем его элементы в новый массив - они будут идти в обратном порядке:

var arr = ['a', 'b', 'c', 'd', 'e'];
var result = [];

for (var i = arr.length - 1; i >= 0; i--) {
	result.push(arr[i]);
}

console.log(result); //выведет ['e', 'd', 'c', 'b', 'a']

Переворот объекта

Давайте поменяем ключи и значения в объекте, например из {a: 1, b: 2, c: 3, d: 4, e: 5} сделаем {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}.

Для этого переберем циклом for-in исходный объект и создадим при этом новый объект result. Ключами нового объекта сделаем элементы старого (это obj[key]), а значениями нового объекта - ключи старого (это key):

var obj = {a: 1, b: 2, c: 3, d: 4, e: 5};
var result = {};

for (var key in obj) {
	result[obj[key]] = key;
}

console.log(result); //выведет {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}

Подсчет количества элементов

Пусть дан массив ['a', 'b', 'c', 'a', 'a', 'b']. Давайте подсчитаем количество одинаковых элементов в этом массиве и сделаем результат в виде объекта {a: 3, b: 2, c: 1}.

Для решения сделаем объект count с начальным значением {a: 0, b: 0, c: 0}. Будем перебирать массив циклом и увеличивать соответствующее значение в объекте count. К примеру: если текущий элемент массива - это 'a', то увеличим count['a'] на единицу - вот так: count['a']++.

Только вместо 'a' следует подставлять текущий элемент массива, вот так: count[arr[i]]++. Давайте напишем окончательный код:

var arr = ['a', 'b', 'c', 'a', 'a', 'b'];
var count = {a: 0, b: 0, c: 0};

for (var i = 0; i < arr.length; i++) {
	count[arr[i]]++;
}

console.log(count); //выведет {a: 3, b: 2, c: 1}

Пойдем дальше: то, что объекта count имеет изначальное значение {a: 0, b: 0, c: 0} - не очень удобно, ведь мы обычно не знаем, какие элементы есть в массиве.

Пусть объект count формируется автоматически таким образом: если такого элемента в count нет, то ему следует присвоить значение 1, а если есть - просто увеличить значение на единицу:

var arr = ['a', 'b', 'c', 'a', 'a', 'b'];
var count = {};

for (var i = 0; i < arr.length; i++) {
	if (count[arr[i]] === undefined) {
		count[arr[i]] = 1;
	} else {
		count[arr[i]]++;
	}
}

console.log(count); //выведет {a: 3, b: 2, c: 1}

Перебор многомерных массивов

Пусть дан следующий двухмерный массив:

var arr = [[1, 2, 3, 4, 5], [6, 7, 8], [9, 10]];

Давайте выведем все его элементы на экран. Для этого нам необходимо запустить два вложенных друг в друга цикла:

var arr = [[1, 2, 3, 4, 5], [6, 7, 8], [9, 10]];

for (var i = 0; i < arr.length; i++) {
	for (var j = 0; j < arr[i].length; j++) {
		alert(arr[i][j]);
	}
}