兩個相等的陣列,修改其中乙個怎麼做到不改變另外乙個

2021-09-25 17:50:53 字數 1236 閱讀 4486

//方法一:concat()用於連線兩個或多個陣列。該方法不會改變現有的陣列,而僅僅會返回被連線陣列的乙個副本。

let arra = [1, 2, 3];

let arrb = .concat(arra);

console.log(arra,arrb);  //[1, 2, 3],[1, 2, 3]

//如果改變arra,  arrb不會改變

arra.splice(0,1);

console.log(arra,arrb);  //[2, 3],[1, 2, 3]

//如果改變arrb, arra不會改變

arrb[0] = 0;

console.log(arra,arrb);   //[1, 2, 3],[0, 2, 3]

//方法二:先json.stringify( ) 後 json.parse( )

let arra = [1, 2, 3];

let arrb = json.parse(json.stringify(arra));  //arrb: [1, 2, 3]

//如果 arrb.pop();            //arrb:[1,2],   arra:[1,2,3]

//如果 arra.shift();          //arra:[2,3],   arrb:[1,2,3]

//方法三:jquery的extend方法

let a = [1,2,3];

let b = $.extend(true,,a)

b[0]++   //b:[2,2,3]    a:[1,2,3]

方法四:object.assign()方法 或者 [...arr]

let a = [1,2,3];

let b = object.assign(,a)   //或者 let b = [...a]  

b[0]++   //b:[2,2,3]    a:[1,2,3]

//但是需要注意的是,如果是物件陣列,即使是用方法一的concat、方法四的object.assign()或者[...arr]賦值也是會互相影響的:

let a=

let b = object.assign(,a)   //或者 let b = [...a]  或者 let b = .concat(a) 

b[0].age=25;   //b:    a:

//此時用方法二的先json.stringify( ) 後 json.parse( )

利用兩個棧,反轉其中乙個棧的元素

有兩個相同的棧,乙個裡面放著自大到小排列的數,棧頂的數最小,另乙個棧是空的。不允許利用其它的資料結構,只能利用這兩個棧,要求把第乙個棧裡的數字反過來,從小到大排列,結果還放在原來的那個棧裡面。思路 假設stacka存放數,stackb為輔助棧。stacka元素個數為n。第1次操作 先取stacka棧...

隨機顯示陣列的其中乙個 演算法丨陣列

記憶體的工作原理 鍊錶存在類似的問題。在需要讀取鍊錶的最後乙個元素時,不能直接讀取,因為不知道它的位址,必須先訪問元素 1,從中獲取元素 2,依次類推。需要讀取所有元素時,鍊錶的效率很高 如果需要跳躍,鍊錶的效率是很低的。陣列與此不同 假設有乙個陣列,它包含五個元素,起始位址為00,那麼元素 5的位...

多表關聯刪除和修改其中乙個表

update from 語法是早就知道的,今天把delete琢磨出來了 記錄以備忘 delete a from t sms send a,t sms diaocha send b where b.dcid 10 and a.dxnrid b.dxnrid and a.fssj b.fssj upda...