2016-07-20 13 views
-2

私は次のようにアルファベット順に整理されたJSONオブジェクトを作成します:それぞれのアルファベットの辞書は私の持っている文字列の配列を与えるようにするためJSONオブジェクトのと配列

var Dictionary = {}; 
 
var AlphabetString = "abcdefghijklmnopqrstuvwxyz"; 
 
for (x in AlphabetString) { 
 
    Dictionary[x] = new Array(); 
 
} 
 
var TestingString = ["apples, bannans, carrots, dice"]; 
 
for (x in TestingString) { 
 
    Dictionary[TestingString.charAt(0)].push(TestingString); 
 
}

をつまり、私の例Dictionary ["a"] = ["apples"]の中の識別子と同じ最初の文字です。これは正しいことでしょうか?

+1

代わりに 'in'の(...ののvar x)のための使用' '、それがうまくいきます。 – Bergi

+2

「JSONオブジェクト」のようなものはありません。 – gcampbell

+0

**文字列と配列に対して 'for ... in'を使用しないでください**。 'for ... of'または適切なforループを使用してください。 – ndugger

答えて

0

また、単語の配列である必要があり、アレイ方式

var AlphabetString = "abcdefghijklmnopqrstuvwxyz"; 
var Dictionary = AlphabetString.split('').reduce((res, curr) =>{ 
    res[curr] = [] 
    return res 
}, {}) 

var TestingString = "apples, bannans, carrots, dice"; 
res = TestingString.split(/, /).forEach(item => Dictionary[item[0].toLowerCase()].push(item)) 
1

You shouldn't use for...in loops to iterate array-like objects like arrays or strings.

そしてTestingStringでそれを行うことができます。

var dictionary = Object.create(null); 
 
var testingArray = ["apples", "bannans", "carrots", "dice", "abc"]; 
 
for (var i=0; i<testingArray.length; ++i) { 
 
    var firstChar = testingArray[i].charAt(0); 
 
    if(!(firstChar in dictionary)) dictionary[firstChar] = []; 
 
    dictionary[firstChar].push(testingArray[i]); 
 
} 
 
console.log(dictionary);

はES6であなたがfor...ofで反復することができます

は、私は(firstCharが空の文字列がある場合、おそらくチェック)このようなものを使用します。

0

hereの場合、for inはここでは悪い考えです。しかし、あなたがまだそれに抱きしめたいのであれば、あなたがそれをどうやってやれるのかがあります。

var Dictionary = {}, 
 
    elem, index; 
 
var AlphabetString = "abcdefghijklmnopqrstuvwxyz"; 
 
var TestingString = ["apples", "bannans", "carrots", "dice"]; 
 
for (x in TestingString) { 
 
    elem = TestingString[x]; 
 
    index = elem.charAt(0); 
 
if (!Dictionary[index]) { 
 
    Dictionary[AlphabetString[x]] = []; 
 
} 
 
Dictionary[index].push(elem); 
 
} 
 

 
console.dir(Dictionary);

関連する問題