プログラムにこのテーブルhttp://code.google.com/apis/chart/docs/gallery/qr_codes.html#detailsが必要ですが、連想配列が最適かどうかさえわかりません。
タイプ(数値/英数字)、文字数、EC(エラー訂正)レベルを考慮して、バージョン(最初の列)を返す関数が必要です。
プログラムにこのテーブルhttp://code.google.com/apis/chart/docs/gallery/qr_codes.html#detailsが必要ですが、連想配列が最適かどうかさえわかりません。
タイプ(数値/英数字)、文字数、EC(エラー訂正)レベルを考慮して、バージョン(最初の列)を返す関数が必要です。
まず、JavaScriptには「配列」と「オブジェクト」があります。「連想配列」とは、非負の整数以外のキーを使用する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
}
}
}
};
次に、次のようにプロパティにアクセスします。
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