Мои задачи по Javascript
Случайная задача
Список всех задач

Задача 2

let arr1 = [10, 20, [7, 9], 30, [2, 4, [15]], 80];
let arr2;

// arr2 = ?? // здесь делаем копию массива

arr2[2][0] = 8; // меняем в массиве-копии значение, оно не должно измениться в массиве-оригинале

console.log(arr2[2][0]); // 8
console.log(arr1[2][0]); // должно быть 7, а не 8
Какую строку надо вставить вместо // arr2 = ??, чтобы console.log(arr1[2][0]); вывело 7?
1
2
3
4
5
6
7
← Задача 1Задача 3 →
Пояснение Все массивы являются объектами, поэтому в выражении arr2 = arr1 происходит просто копирование ссылки на объект.

Использованные трюки с методами из Array.prototype создают новые массивы. Однако в случае элементов-объектов копирование элементов происходит всё равно по ссылке.

Однако, трюк с JSON.stringify сработает в данном случае как надо. JSON.stringify пройдётся по всем вложенным массивам и вернёт соответствующую строку, которую потом разберёт JSON.parse.



Написать сообщение - отзыв, пожелание и т.п.