我希望创建一个JavaScript对象(关联数组),其中字母是键。最好的方法是什么?
例如 -
obj[a] = 'somevalue'
obj[b] = 'somevalue'
...
obj[z]= 'some value'
动态地将字母作为键值分配。
我希望创建一个JavaScript对象(关联数组),其中字母是键。最好的方法是什么?
例如 -
obj[a] = 'somevalue'
obj[b] = 'somevalue'
...
obj[z]= 'some value'
动态地将字母作为键值分配。
以下是一种快速而简单的创建对象的方法:
var a = 97;
var charArray = {};
for (var i = 0; i<26; i++)
charArray[String.fromCharCode(a + i)] = String.fromCharCode(a + i);
console.log(charArray);
fromCharCode
。因此,您可以使用在https://dev59.com/9mHVa4cB1Zd3GeqPsPox#9878531上回答的自定义函数来实现,并且效果非常好。 - RaphaelDDLvar hash = {};
hash["abcdefghijklmnopqrstuvwxyz"] = "something";
hash["בגדהוזחטיךכלםמןנסעףפץצקרשת"] = "something else";
hash["АБВГДЕЖЅZЗИІКЛМНОПРСТȢѸФХѾЦЧШЩЪꙐЬѢꙖѤЮѦѪѨѬѠѺѮѰѲѴ"] = "something else";
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。
[]
)或对象({}
),需要知道的是数组实际上是一个带有一些陷阱的对象。因此要小心。使用数组来处理基于整数的索引,使用对象来处理非整数基础索引。 - Darin Dimitrov[]
表示数组,使用{}
表示对象,而不是调用new Object()
和new Array()
。构造函数在某些参数组合下会以意想不到的方式运作。(这些方式已经被记录并且可靠,但每次看到这种结构时,你都必须问自己“他们想做什么?”) - Sean McMillan你可以使用reduce创建关联数组:
const dict = Array.from(new Array(26))
.reduce((p, c, i) => (p[String.fromCharCode(i + 97)] = i, p), {})
console.log(dict)
首先使用Thack Mai的技巧创建一个字母数组,具体方法请参考此链接:
var associateArray = []
for (i = 65; i <= 90; i++) {
associateArray[i-65] = String.fromCharCode(i).toLowerCase()
}
associateArray['a'] = 1
associateArray['b'] = 2
for (var i = 0; i < associateArray.length; i++) {
console.log(associateArray[associateArray[i]])
}
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');
console.group("Alphabets form (A-Z) are:");
var a = 65;
for (var i = 0; i<26; i++) {
console.log(String.fromCharCode(a + i))
}
console.groupEnd();
console.group("Alphabets form (a-z) are:");
var a = 97;
for (var i = 0; i<26; i++) {
console.log(String.fromCharCode(a + i))
}
console.groupEnd();