1
爲什麼我無法從這些數組中刪除第一項,以及爲什麼新數組模仿舊數組?爲什麼數組模擬彼此並重置自己?
(舊陣列插槽和端口,新的陣列是w和w_ports)
function pull(arr,val){
for(var i = 0, j = 0, l = arr.length; i < l; i++){
if(arr[i]!==val){
arr[j++]=arr[i];
}
}
arr.length=j;
}
var sockets = [1,2,3,4]
, ports[8002,8003,8004,8005];
console.log(sockets,ports); // [ [1,2,3,4] , [8002,8003,8004,8005] ]
var m=sockets[0];
var m_port=ports[0];
var w=sockets;
pull(w,w[0]);
var w_ports=ports;
pull(w_ports,w_ports[0]);
console.log(w,w_ports); // [ [2,3,4] , [8003,8004,8005] ]
sockets.unshift(m);
ports.unshift(m_port);
console.log(sockets,ports); // [ [1,2,3,4] , [8002,8003,8004,8005] ]
console.log(w,w_ports); // [ [1,2,3,4] , [8002,8003,8004,8005] ]
我想會留下插槽和端口不變,但是,W和w_ports失蹤的第一個項目
UPDATE:感謝adeneo,Akshat Singhal
console.log(sockets,ports);
var m=sockets[0];
var m_port=ports[0];
var w=sockets.slice(1,sockets.length);
var w_ports=ports.slice(1,ports.length);
console.log(sockets,ports);
console.log(w,w_ports);
有人能把它的答案,所以我可以給打勾請...
這是因爲你沒有創建數組副本,但只是添加引用的建議。聲明一個新的數組,然後將值複製到它。 –
好的,我會試試..如果你的權利不好,我不能打勾你 –
'var w_ports = ports.slice();' – adeneo