.splice(x,1)不起作用

我使用Node JS开始了我的第一步,事情一切都好,直到我遇到一个奇怪的行为,我既不能理解也找不到解决方法。 它应该是如此简单,一切都有很好的logging,我可以find这么多的例子,我可能会失去一些非常明显的东西,不幸的是。 放了近2天后,我决定寻求一些帮助…提前感谢。

我正在尝试将对象(clientID,套接字信息)存储在一个数组中,并希望在连接丢失时删除一个对象。

我已经构build了一小部分复制行为的代码。

var socket = require('socket.io'); var machines = []; var mach1 = [new socket(), new socket()]; var mach2 = [new socket(), new socket()]; var mach3 = [new socket(), new socket()]; machines["357973049420265"] = mach1; machines["357973049420266"] = mach2; machines["357973049420267"] = mach3; console.log("Before : " + Object.keys(machines)); machines.splice(0,1); console.log("After : " + Object.keys(machines)); 

结果是:

 Before : 357973049420265, 357973049420266, 357973049420267 After : 357973049420265, 357973049420266, 357973049420267 

有任何想法吗?

谢谢

machines是一个数组,所以你设置"357973049420265" – 一个string值 – 作为一个关键。 .splice只会改变数字键。

我不确定你想要实现什么,但是你要么使用machines = {}并通过delete来删除属性,要么使用.push添加数组元素来让.splice工作。

如果你使用了一个对象,你可以delete machines[Object.keys(machines).slice(0, 1)]来完成这个代码似乎试图做的事情,但是你的最终目标还不清楚。