Mr *_*rcs 2 javascript arrays dictionary associative
我在程序中需要这个表http://code.google.com/apis/chart/docs/gallery/qr_codes.html#details,我甚至不确定是否可以使用关联数组.
给定类型(数字/字母数字),字符数和EC(纠错)级别,我想要一个函数来返回版本(第一列).
首先,JavaScript有"数组"和"对象".通过'associative array',我假设你的意思是一个JavaScript对象,使用非负整数以外的键.
您可以使用以下语法创建JavaScript对象文字:
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
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
然后,您将访问属性,如下所示:
console.log( versions[1].charsByECLevel.L.digits );
// 41
Run Code Online (Sandbox Code Playgroud)
要遍历值,您可以这样做:
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"
Run Code Online (Sandbox Code Playgroud)
编辑:写完上面的,如果你只想要查找基于水平和数字版本,你应该扭转哈希值.而不是循环并检查版本,直接索引它们并在恒定时间内查找:
var versionByLevelAndDigits = {
L : {
41 : 1,
77 : 2,
127 : 3
},
M : {
34 : 1,
63 : 2,
101 : 3
}
};
var version = versionByLevelAndDigits["L"][77];
// 2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5752 次 |
最近记录: |