首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.splice(x,1)不工作

.splice(x,1)不工作
EN

Stack Overflow用户
提问于 2015-06-26 18:01:49
回答 1查看 247关注 0票数 1

我使用Node迈出了我的第一步,一切都很顺利,直到我遇到一种奇怪的行为,我既无法理解,也无法找到解决办法。它应该是如此简单,每件事都有很好的文档,我可以找到这么多的例子,我可能会错过一些非常明显的东西,不幸。在这两天之后,我决定寻求帮助.提前谢谢。

我试图将对象(clientID、socket信息)存储在数组中,并希望在连接丢失时删除对象。

我已经构建了一小部分代码来复制这种行为。

代码语言:javascript
复制
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));

结果是:

代码语言:javascript
复制
Before : 357973049420265, 357973049420266, 357973049420267 
After  : 357973049420265, 357973049420266, 357973049420267

有什么想法吗?

Thx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-26 18:11:53

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

我不知道您想要实现什么,但是您要么希望使用machines = {}并通过delete删除属性,要么使用.push添加数组元素以使.splice工作。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31079428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档