私がデータを扱っているとき、私は通常、作成する Arrays
かObjects
ループする必要があります。たとえば、「その場で」としましょう。
たとえば、配列キーの 1 つで要素をグループ化する配列を再配置したいとします。私が使用する方法の 1 つは、for in
. しかし問題は、その場で複数のインデックスを定義する場合です。
for(key in array){
newArray[array[key]['gouping_key']] = array[key];
}
この例は正常に動作します。ただし、同じ を持つ要素が複数ある場合grouping_key
、このコードは前の要素をオーバーライドします。
だから、私はこれを試します:
var i = 0;
for(key in array){
newArray[array[key]['gouping_key']][i] = array[key];
i++
}
しかし、その 2 番目のインデックスを追加すると、インタープリターは が であると不平を言いnewArray[array[key]['gouping_key']]
ますundefined
。前の例では問題がないようです。
何故ですか?
前のスニペットの説明が不十分で不明確な場合に備えて、このフィドルを例で作成しました。フィドルには 3 つのスニペットがあります (2 つはコメントアウトされています)。
1 つ目は、前述のようなことをしようとしたときに発生するエラーです。2番目は私が使用するソリューションです。3 つ目は、インデックスが 1 つだけのオンザフライで配列を作成する例です。
要約すると、2番目のインデックスを追加すると、そのエラーが発生する理由を知りたいです。
ありがとう!