2 つの質問があります。
多くのオブジェクトを含む配列を作成するにはどうすればよいですか?
var myarray = [];
myarray[0] = {};//make an empty object
myarray[0].sessionId = '12345';//in JS assigning something to a property of an object creates/updates it
myarray[0].nickname = 'timmay!';
myarray[0].socketIds = [];//create an empty array
myarray[0].socketIds[0] = 1;//assign the first element of array called socketIds in the first object of the array called myarray
myarray[0].socketIds[1] = 2;
myarray[0].socketIds[2] = 3;
myarray[1] = {};
myarray[1].sessionId = '12345';
myarray[1].nickname = 'timmay!';
myarray[1].socketIds = [ 4, 5, 6];
たとえば、上記の例で、これに myarray という名前を付ける場合、socketIds 1 または timme をどのように呼び出す必要がありますか!?
alert( myarray[0].socketIds[0] );
alert( myarray[0].nickname );
編集1:
通常は for() ループを使用して配列を処理しますが、Javascript エンジンのパフォーマンスを最大限に引き出したい場合は、配列参照を毎回参照するのではなく、保存することを検討してください。このような:
var myarray = [];
var tmpObj = myarray[0] = {};//make an empty object
tmpObj.sessionId = '12345';//in JS assigning something to a property of an object creates/updates it
tmpObj.nickname = 'timmay!';
var tmpArr = tmpObj.socketIds = [];//create an empty array
tmpArr[0] = 1;//assign the first element of array called socketIds in the first object of the array called myarray
tmpArr[1] = 2;
tmpArr[2] = 3;
しかし、最新の Javascript エンジンはこれらの繰り返し参照を処理し、最終的なコードは参照を保存しない場合と同じくらい高速になると確信しています。
編集2:
もちろん、あなたが自分の質問に書いたことは、配列を初期化するための有効な構文でもあります(オブジェクトと配列リテラル):
var myarray = [
{
sessionId: '12345',
nickname: 'timmay!',
socketIds: [1, 2, 3]
},
{
sessionId: '23456',
nickname: 'pete',
socketIds: [4, 5, 6]
}
];
この構文の問題は、値をハードコーディングする必要があり、Javascript で複雑なデータ構造を作成する最も一般的な方法ではないことです。とにかく、この回答の冒頭で述べた最初のソリューションと同じオブジェクトが作成されます。したがって、次のようなパーツに引き続きアクセスできます。
alert( myarray[0].socketIds[0] );