[英]Extended Array Class in Javascript: How should I create helper functions to modify Array without assigning a new reference?
[英]Javascript: How to modify each element in array without changing the reference
let nestedArr = [[0,0],[0,0]]
let insideArr = nestedArr[0]
let targetArr = [1,1]
基本上我想將insideArr's
元素更改為等於targetArr
,它也應該更改nestedArr
的第一個元素(因為insideArr
的是那個)。
insideArr = targetArr
insideArr = [..targetArr]
以上兩種方法都行不通,因為它會使insideArr
指向新的引用。 我知道使用forEach
循環遍歷insideArr
並一個一個地分配它應該可以工作,但是有更好的方法嗎? 順便說一句,我應該避免這種用法嗎?
如果你必須維護insideArr
作為對nestedArr[0]
的引用,你可以使用Array.prototype.splice()
來改變insideArr
let nestedArr = [[0,0],[0,0]] let insideArr = nestedArr[0] let targetArr = [1,1] // Replace all of insideArr with targetArr insideArr.splice(0, insideArr.length, ...targetArr) console.log("still the same reference?", insideArr === nestedArr[0]) console.log("insideArr:", insideArr) console.log("nestedArr:", nestedArr)
.as-console-wrapper { max-height: 100%;important; }
假設您有充分的理由保持參考相同 - 有時有,您可以這樣做:
let nestedArr = [
[0, 0],
[0, 0]
];
let insideArr = nestedArr[0];
let targetArr = [1, 1];
insideArr.length = 0;
insideArr.unshift(...targetArr); // insideArr.push(...targetArr) works fine too
console.log(nestedArr);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.