|
@@ -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 ведь это два разных массива
|
|
|
+```
|