Один массив равен другому. Как заморозить одно при смене другого?

1

Я хочу; для возврата [1,2,3] вместо [2,3], но если я использую freeze, я просто получаю "TypeError: 0 доступен только для чтения":

var a=[];

function x(){
var b=[1,2,3];

a=b;
//Object.freeze(a);
var b2 = b.splice(0,1);

}
x();
a;

Есть идеи?

Теги:
arrays

2 ответа

2
Лучший ответ

Сделайте копию массива вместо сохранения ссылки в массиве, иначе freeze повлияет на оба массива, поскольку оба они одинаковы.

// copy the array using slice method
a = b.slice();
  • 0
    Отличное решение.
0

Забавно, как жизнь проходит по кругу, но, читая о распространенном операторе es6, я узнал способ ответить на мой собственный вопрос (опубликованный неделю или около того), не используя срез (как предложено из превосходного принятого ответа):

var arr = [1,2,3];
var new_arr = [...arr]; // like arr.slice()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню