我使用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
有什么想法吗?
THX
答案 0 :(得分:2)
machines
是一个数组,因此您将"357973049420265"
- 字符串值 - 设置为键。 .splice
只会更改数字键。
我不确定您要实现的目标,但您要么使用machines = {}
并通过delete
删除属性,要么使用.push
添加数组元素以获取.splice
工作。
如果你使用了一个对象,你可以delete machines[Object.keys(machines).slice(0, 1)]
做这个代码似乎试图做的事情,但你的最终目标还不清楚。