2017-01-07 17 views
2

私はアイテムを持つ配列を持っていますが、最初の文字に従ってそれらをグループ化したいのですが、アイテムを配列にプッシュすると、アイテムが明確に表示されている間に空の "Array [0] 。Javascript配列が配列を作成していません

明らかに私は何か間違っていますが、私は何が分かりません。

var group = []; 
 
var alphabetArray = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''); 
 
alphabetArray.forEach(function(letter) { 
 
    group[letter] = group[letter] || []; 
 
    group[letter].push({ 
 
    key: letter, 
 
    letter 
 
    }); 
 
}); 
 
console.log(group);

+0

"彼らは最初の文字をに従ってグループは、" - あなたは何を意味するのですか?並べ替えのいくつかの種類ですか? –

+0

元の配列はユーザ​​データを含む配列です – Peter

+0

入力文字列 'AB'には、最初の2文字だけを返すようにしてください。私はまだ正確に何を探しているのか分かりません。 –

答えて

2

配列は、データの順序集合整数あるプロパティ名で表さを保持するように設計されています。

の文字というプロパティ名を割り当てています。

アレイはその種のデータを保持するようには設計されておらず、console.logはアレイのプロパティを表示しません。


アレイを使用しないでください。オブジェクトを使用する。オブジェクトは、任意のプロパティ名で順序付けられていないデータを保持するように設計されています。注文が問題になる場合は、代わりにMapを使用します。

+0

さて、名前は整数ではありません(数字ではありませんが、十分に近い)。それらは、数値の「i」が「+0≤i <2^32-1」の範囲にある正規形式の整数を示す一連の桁からなる文字列です。 :-) –

1

アレイの代わりにオブジェクトを作成したいと考えています。 [] {}

に配列がインデックスとしてint型を期待し、オブジェクトを文字列に

var group = {}; // Object instead of Array 
 
var alphabetArray = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''); 
 
alphabetArray.forEach(function(letter) { 
 
    group[letter] = group[letter] || []; 
 
    group[letter].push({ 
 
    key: letter, 
 
    letter 
 
    }); 
 
}); 
 
console.log(group);

+0

これは、Angular 2でngForで反復したいときに有効です。 – Peter

+1

あなたは本当に問題に言及する必要があります。[XY問題](http://meta.stackexchange.com/questions/ 66377/what-is-the-xy-problem) –

0

を取ることができます変更私はあなたが構造体に各文字を変換したいと思います。 Iそうfを、あなたはArray.map必要があります。

var alphabetArray = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''); 
 
var group = alphabetArray.map(function(letter) { 
 
    return { 
 
    [letter]: letter 
 
    }; 
 
}); 
 
console.log(group);

関連する問題