2015-06-26 50 views
1

我使用Node JS開始了我的第一步,事情一切都好,直到遇到一個奇怪的行爲,我無法理解,也找不到解決方法。它應該是如此簡單,一切都有很好的記錄,我可以找到這麼多的例子,我可能會遺漏一些很明顯的東西,不幸的是。經過近兩天的放鬆,我決定尋求一些幫助......提前致謝。.splice(x,1)不起作用

我想存儲對象(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

回答

2

machines是一個數組,所以要設置"357973049420265" - 字符串值 - 作爲重點。 .splice只會更改數字鍵。

我不知道你想達到什麼樣的,但是你要麼需要使用machines = {},並通過delete刪除屬性或使用.push添加數組元素得到.splice工作。

如果你使用了一個對象,你可以做delete machines[Object.keys(machines).slice(0, 1)]來做這個代碼似乎試圖做的事情,但是你的最終目標還不清楚。

+0

非常感謝。問題解決了你的小費。 machines.splice(0,1)被刪除機器[「357973049420266」]所取代。 –