me@helium 8 gadi atpakaļ
vecāks
revīzija
da6968fa21
1 mainītis faili ar 105 papildinājumiem un 0 dzēšanām
  1. 105 0
      03LoopsAndArrays.md

+ 105 - 0
03LoopsAndArrays.md

@@ -180,3 +180,108 @@ for (var i=0;i<10;i++){
 	console.log(str);
 }
 ```
+
+#### Задание
+
+Напишите вложенный цикл, который будет создавать HTML для таблицы умножения. Используйте тэги `table`, `tr`, `td`. Таблица должна создаваться в
+строковой переменной. Для вывода этой переменной используйте `document.write`.
+
+
+## Массивы
+
+**Массив** - это упорядоченная структура данных, состоящая из нумерованных ячеек. Нумерация идет от 0. Например строка (`String`) - массив символов.
+Доступ к ячейкам массива происходит по её номеру в квадратных скобках:
+
+```javascript
+var myName = "asmer"
+myName[0]
+myName[4]
+myName.length
+```
+Для оперирования с массивами зачастую используются циклы.
+
+#### Задание
+Выведите какую-либо строку побуквенно, используя цикл `for`. Длина массива или строки находится в свойстве `length`.
+
+### Определение массива
+
+Массивы можно определять несколькими способами
+```javascript
+var oopWay = new Array(1,2,3);
+var inlineWay = ["some", "other", "array'"];
+```
+
+### Операции с элементами массива
+В общем те же самые, что и с обычными переменными. Просто не забудьте добавить квадратные скобки и индекс (номер элемента):
+
+```javascript
+var oopWay = new Array(1,2,3);
+var inlineWay = ["some", "other", "array'"];
+
+oopWay[0]++
+oopWay[2] = oopWay[0] - oopWay[1]
+inlineWay[3] = inlineWay[0] + inlineWay[1] + inlineWay[2]
+```
+
+#### Задание
+Перепишите последнюю строку примера так, что бы можно было сконкатенировать массив с любым количеством элементов.
+
+### Присвоение, сравнение, копирование массивов и различия со строками.
+
+В отличие от всех тех типов, которые вы видели ранее, массивы ведут себя как полноценные *объекты*. Это значит, что при присвоении переменных, содержащих
+массив, создание нового массива **не** происходит, и переменная ссылается на тот же массив:
+
+```javascript
+a = b = [1,2,3]
+//[1, 2, 3]
+a == b
+//true
+a[0] = 500
+//500
+a
+//[500, 2, 3]
+b
+//[500, 2, 3]
+```
+
+Для создания копии массива (чего обычно ожидают от присвоения), существует метод `slice`:
+```javascript
+a = b.slice()
+//[500, 2, 3]
+a
+//[500, 2, 3]
+a[0] = 1
+//1
+b
+//[500, 2, 3]
+a
+//[1, 2, 3]
+a == b
+//false
+```
+
+Однако копия не равна оригиналу несмотря на одинаковое содержимое:
+```javascript
+a
+//[1, 2, 3]
+b
+//[500, 2, 3]
+b[0] = 1
+//1
+b
+//[1, 2, 3]
+a == b
+//false
+```
+
+Пустой массив равен false:
+```javascript
+[] == false
+//true
+!![]
+//true эта проверка не работает для объектов
+false == []
+//true
+[] == []
+//false ведь это два разных массива
+```