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