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 に答える