如何在javascript中使用复杂的关联数组?
我的程序中需要这个表,我甚至不确定是否应该使用关联数组 给定类型(数字/字母数字)、字符数和EC(纠错)级别,我需要一个函数返回版本(第一列)。首先,JavaScript有“数组”和“对象”。我假设“关联数组”是指JavaScript对象,使用非负整数以外的键 您可以使用以下语法创建JavaScript对象文字:如何在javascript中使用复杂的关联数组?,javascript,arrays,dictionary,associative,Javascript,Arrays,Dictionary,Associative,我的程序中需要这个表,我甚至不确定是否应该使用关联数组 给定类型(数字/字母数字)、字符数和EC(纠错)级别,我需要一个函数返回版本(第一列)。首先,JavaScript有“数组”和“对象”。我假设“关联数组”是指JavaScript对象,使用非负整数以外的键 您可以使用以下语法创建JavaScript对象文字: var versions = { "1" : { rowcols : [21,21], charsByECLevel : { L : {
var versions = {
"1" : {
rowcols : [21,21],
charsByECLevel : {
L : {
digits:41,
alpha:25
},
M : {
digits:34,
alpha:20
}
}
},
"2" : {
rowcols : [25,25],
charsByECLevel : {
L : {
digits:77,
alpha:47
},
M : {
digits:63,
alpha:48
}
}
}
};
然后,您将按如下方式访问属性:
console.log( versions[1].charsByECLevel.L.digits );
// 41
要循环遍历这些值,可以执行以下操作:
function findVersion( versions, level, digits ){
for (var versionNumber in versions){
if (versions.hasOwnProperty(versionNumber)){
if (versions[versionNumber].charsByECLevel[level].digits == digits){
return versionNumber;
}
}
}
}
findVersion( versions, "L", 77 );
// returns "2"
编辑:写完上述内容后,如果您只想根据级别和数字查找版本,您可能应该反转哈希。与其循环检查版本,不如直接编制索引并在固定时间内查找:
var versionByLevelAndDigits = {
L : {
41 : 1,
77 : 2,
127 : 3
},
M : {
34 : 1,
63 : 2,
101 : 3
}
};
var version = versionByLevelAndDigits["L"][77];
// 2
@我很高兴见到你。请务必看到我放在底部的最新答案。