1

我使用 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

有任何想法吗?

谢谢

4

1 回答 1

2

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

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

如果您使用一个对象,您可以执行delete machines[Object.keys(machines).slice(0, 1)]此代码似乎试图执行的操作,但您的最终目标尚不清楚。

于 2015-06-26T18:11:53.673 回答