我给出了使用Node JS的第一步,一切顺利,直到遇到一个既无法理解也无法找到解决方法的奇怪行为。
它应该是如此简单,所有内容都有据可查,而且我可以找到很多这样的工作示例,不幸的是,我可能缺少一些非常明显的东西。经过大约2天的放松之后,我决定寻求帮助...在此先感谢。
我正在尝试将对象(clientID,套接字信息)存储在数组中,并希望在连接丢失时删除对象。
我已经构建了代码的一小部分来复制行为。
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"
(一个字符串值)作为键。 .splice
将仅更改数字键。
我不确定您要实现的目标,但是您要么想使用machines = {}
并通过delete
删除属性,要么想使用.push
添加数组元素以使.splice
正常工作。
如果使用了对象,则可以执行delete machines[Object.keys(machines).slice(0, 1)]
来执行此代码似乎试图执行的操作,但是您的最终目标尚不清楚。