создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

Урок 14. Приемы работы с массивами в JavaScript

Содержание

Теория

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

Заполнить массив 8 иксами (метод push):

var a=[];for(i=0;i<8;i++){a.push('x')}document.write(a)//Выведет ['x','x','x','x','x','x','x','x']

Заполнить массив числами от 1 до 8:

var a=[];for(i=1;i<=8;i++){a.push(i)}document.write(a)//Выведет [1,2,3,4,5,6,7,8]

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

var a=[];for(i=0;i<8;i++){a[i]='x'}document.write(a)//Выведет ['x','x','x','x','x','x','x','x']

var a=[];for(i=0;i<8;i++){a[i]=i+1}document.write(a)//Выведет [1,2,3,4,5,6,7,8]

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

Из массива ['a','b','c','d','e'] сделать ['e','d','c','b','a'].

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

a=['a','b','c','d','e'],r=[];for(i=a.length-1;i>=0;i--){r.push(a[i])}document.write(r)//Выведет ['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 исходный объект и создать при этом новый объект r. Ключами нового объекта сделать элементы старого (это o[k]), а значениями нового объекта - ключи старого (это k):

o={a:1,b:2,c:3,d:4,e:5},r={};for(var k in o){r[o[k]]=k}console.log(r)//Выведет {1:'a',2:'b',3:'c',4:'d',5:'e'}

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

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

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

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

a=['a','b','c','a','a','b'],c={a:0,b:0,c:0};for(i=0;i<a.length;i++){c[a[i]]++}document.write(c)//Выведет {a:3,b:2,c:1}

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

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

a=['a','b','c','a','a','b'],c={};for(i=0;i<a.length;i++){if(c[a[i]]===undefined){c[a[i]]=1}else{c[a[i]]++}}console.log(c)//Выведет {a:3,b:2,c:1}

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

Есть 2-мерный массив: a=[[1,2,3],[4,5,6],[7,8]].

Вывести все его элементы, т.е. запустить 2 вложенных друг в друга цикла:

a=[[1,2,3],[4,5,6],[7,8]];for(i=0;i<a.length;i++){for(j=0;j<a[i].length;j++){document.write(a[i][j])}}

Практика

Задачи для решения

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

Задача 1

Заполнить массив: в 1-й элемент записать 'x', во 2-й 'xx', в 3-й 'xxx' и т.д.

var a=[],s='x',q=s;for(i=1;i<=8;i++){a.push(s);s=s+q}document.write(a)

Задача 2

Заполнить массив: в 1-й элемент записать '1', во 2-й '22', в 3-й '333' и т.д.

Доделать!

Задача 3

Сделать функцию arrayFill, которая будет заполнять массив заданными значениями. 1-м параметром функция принимает значение, которым заполнять массив, а 2-м - сколько элементов должно быть в массиве. Пример: arrayFill('x',5) сделает массив ['x','x','x','x','x'].

Решение:

function arrayFill(value,length){var a=[];for(i=0;i<length;i++){a.push(value)}return a}console.log(arrayFill('x',5))

Задача 4

Дан массив с числами. Узнать, сколько элементов с начала массива надо сложить, чтобы в сумме получилось >10.

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

Дан массив с числами. Не используя метода reverse, перевернуть его элементы в обратном порядке.

Многомерные массивы

Задача 1

Дан 2-мерный массив с числами, например [[1,2,3],[4,5],[6]]. Найти сумму элементов этого массива. Массив может быть произвольным.

Решение:

a=[[1,2,3],[4,5],[6]],s=0;for(i=0;i<a.length;i++){for(j=0;j<a[i].length;j++){s+=a[i][j]}}document.write(s)

Задача 2

Дан 3-мерный массив с числами, например [[[1,2],[3,4]],[[5,6],[7,8]]]. Найти сумму элементов этого массива. Массив может быть произвольным.

Решение:

a=[[[1,2],[3,4]],[[5,6],[7,8]]],s=0;for(i=0;i<a.length;i++){for(j=0;j<a[i].length;j++){for(k=0;k<a[i][j].length;k++){s+=a[i][j][k]}}}document.write(s)

Содержание

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting