新しい配列の先頭に要素を追加してその新しい配列を返すために、以下のコードを記述しました。それはうまく動作しますが、newArrの代わりにarrを返すと、arrも変更されました。明示的に変更されていないにもかかわらず配列の値が変更されました
function addToFrontOfNew(arr, element) {
newArr = arr;
newArr.unshift(element);
return newArr;
}
I書き込みした場合:
function addToFrontOfNew(arr, element) {
newArr = arr;
newArr.unshift(element);
return arr;
}
およびaddToFrontOfNewと機能をテスト([1,2]、3)関数は、[3、1、2]を返します。
元のarrがnewArrとともに変更されないように関数を書き直すにはどうすればよいですか?
'return [element] .concat(arr)' –
あなたのコードでは、 'newArr'と' arr'の両方が同じ配列を参照しているからです。配列をクローニングしていません。 https://stackoverflow.com/questions/3978492/javascript-fastest-way-to-duplicate-an-array-slice-vs-for-loop – undefined