Javascript - 以字母为键的关联数组

时间:2012-05-16 10:59:02

标签: javascript

我希望创建一个以字母为键的Javascript对象(关联数组)。我们非常感谢您对实现这一目标的最佳方式的投入。

示例 -

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

动态地将字母分配为键。

提前致谢。

6 个答案:

答案 0 :(得分:9)

这是创建对象的快速而懒惰的方法:

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/

答案 1 :(得分:4)

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

答案 2 :(得分:3)

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。

答案 3 :(得分: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]])
}

答案 4 :(得分:2)

您可以使用reduce创建关联数组

&#13;
&#13;
const dict = Array.from(new Array(26))
    .reduce((p, c, i) => (p[String.fromCharCode(i + 97)] = i, p), {})
    
console.log(dict)
&#13;
&#13;
&#13;

答案 5 :(得分: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');

DEMO