Вказівник, копіювання масивів
У змінній зберігається не сам масив, а вказівник на комірку пам'яті, де починається масив.
Проведіть експеремент:
let a = [1, 2, 3],
b = a;
a[1] = 'а вже не два!';
console.log(b);
Можна створити рекурсивний масив, just for fun, практичного застосування такі масиви не мають, в багатьох випадках можуть викликати вічний цикл і підвісити браузер:
let mas = [];
mas[0] = mas;
console.dir(mas);
В функції масиви також передаються вказівником:
let a = [1, 2, 3],
b = 1;
fun(a, b);
console.log('end of fun:', a);
console.log('end of fun:', b);
function fun(x, y) {
x[0] = x[0] + 13;
y = y + 13;
console.log('fun:', x);
console.log('fun:', y);
}
Таким чином, щоб зкопіювати масив - треба копіювати його поелементно:
let a = [1, 2, 3],
b = [];
// перший варіант:
for (let i = 0; i < a.length; i++) {
b[i] = a[i];
}
// другий варіант:
a.forEach(function(e){ b.push(e); });
Другий варіант детальніше розглянемо далі.
Скопіюйте двовимірний масив з попередньої підтеми, добавляючи до кожного елемента одиницю за допомогою унарного оператора. Результат виведіть в консоль.