我有一个javascript对象文字? 我在我的网页上访问它们 data.list [i] .ger或data.list [i] .eng
如果我想直接搜索条目,我该如何直接访问该条目? 或者我必须在排序时进行线性搜索或二进制搜索?
data = {
list: [
{
"ger": "A-as",
"eng": "A as"
},
{
"ger": "A-aws",
"eng": "a-was "
},
{
"ger": "we",
"eng": "cv"
},
{
"ger": "q",
"eng": "w-la-w"
},....
例如如果我想访问 “ger”:“q”,“eng”:“w-la-w” 我会将其作为data.list [4] .ger
访问有没有办法直接访问知道该条目的索引是什么?
答案 0 :(得分:1)
我想你可能正在寻找JSONSelect。它使得访问复杂JSON文档中的数据变得容易,但看起来像CSS。
Check out the examples,它看起来非常像你想要做的。
例如,要获得ger:q的eng版本,您可以.ger:val("q") ~ .eng
您可以download it here将其与JSONSelect.match
或JSONSelect.forEach
一起使用。
答案 1 :(得分:0)
如果您只想搜索数组,我会选择
function lookupTrans(value, fromLang, toLang) {
for (var i = 0, dataLen = data.list.length; i < dataLen; i++) {
if (data.list[i][fromLang] === value) {
return data.list[i][toLang];
// return i (if you're lookup for just the index number)
}
}
return "";
}
但是,我确实希望确保您不会尝试单向国际化。如果是这种情况,我建议只使用命名密钥:
var i18n = {
"translation": {
"en": "translation",
"ja": "hon'yaku"
},
"list": {
"en": "list",
"ja": "risuto"
},
"example": {
"en": "example",
"ja": "rei"
},
"imbueWithConfidence": {
"en": "Let's translate!",
"ja": "Hon'yaku shimashou!"
}
};