.splice(x,1) 不工作

.splice(x,1) not working

我使用 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 只会改变 numeric 键。

我不确定你想要达到什么目的,但你要么想使用 machines = {} 并通过 delete 删除属性,要么使用 .push 添加数组元素以获取.splice 上班。

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