5

アルファベットをキーとして JavaScript オブジェクト (連想配列) を作成しようとしています。これを達成するための最良の方法は何ですか?

例 -

obj[a] = 'somevalue'
obj[b] = 'somevalue' 
...
obj[z]= 'some value'

アルファベットをキーとして動的に割り当てる。

4

6 に答える 6

12

オブジェクトを作成するための迅速で怠惰な方法を次に示します。

var a = 97;
var charArray = {};
for (var i = 0; i<26; i++)
    charArray[String.fromCharCode(a + i)] = String.fromCharCode(a + i);

console.log(charArray);

http://jsfiddle.net/V2B7S/

于 2012-05-16T11:10:02.303 に答える
4
var obj = { };
obj['A'] = 'letter A';
obj['B'] = 'letter B';
obj['C'] = 'letter C';

また:

var obj = [ ];
obj['A'] = 'letter A';
obj['B'] = 'letter B';
obj['C'] = 'letter C';

その後:

alert(obj.B);

または同等のもの:

alert(obj['B']);

{ }ただし、非整数ベースのインデックスには構文を使用します。なんで?[ ]次のように、整数以外のインデックスを使用する場合、いくつかの実際の落とし穴があるためです。

var obj = [ ];
obj['A'] = 'letter A';
obj['B'] = 'letter B';
obj['C'] = 'letter C';
alert(obj.length);

何が印刷されると思いますか?はい、あなたはそれを推測しました: 0.

于 2012-05-16T11:00:47.487 に答える
4
var hash = {};
hash["abcdefghijklmnopqrstuvwxyz"] = "something";
hash["בגדהוזחטיךכלםמןנסעףפץצקרשת"] = "something else";
hash["АБВГДЕЖЅZЗИІКЛМНОПРСТȢѸФХѾЦЧШЩЪꙐЬѢꙖѤЮѦѪѨѬѠѺѮѰѲѴ"] = "something else";
于 2012-05-16T11:04:33.447 に答える
2

最初に、 Thack Mai が使用したトリックを使用して、文字の配列を作成します。

var associateArray = []  
for (i = 65; i <= 90; i++) {
    associateArray[i-65] = String.fromCharCode(i).toLowerCase()
}

次に、値をマップしたい任意の文字に値をマップします

associateArray['a'] = 1
associateArray['b'] = 2

これにより、ブラウザーで CSSStyleDeclaration に使用されるオブジェクトの型が作成されます。そのように繰り返すことができます

for (var i = 0; i < associateArray.length; i++) {
    console.log(associateArray[associateArray[i]])
}
于 2012-05-16T11:16:39.970 に答える
1
function range( start, limit ){
    var assoc_array = {};
    var step = 1;
    var DEFAULT_VALUE = "some value";
    step *= limit.charCodeAt(0) - start.charCodeAt(0) > 0 ? 1:-1;
    while( start !== limit ){
        assoc_array[ start ] = DEFAULT_VALUE;
        start = String.fromCharCode(start.charCodeAt(0)+step);
    }
    assoc_array[ limit ] = DEFAULT_VALUE;
    return assoc_array;
}
//Usage examples
var alphabet_array = range('a','z');
var reverse_alphabet_array = range('z','a');

デモ

于 2012-05-16T11:24:17.993 に答える