如何访问javascript对象文字的各个元素?

时间:2011-06-05 15:10:13

标签: javascript

我有一个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

访问

有没有办法直接访问知道该条目的索引是什么?

2 个答案:

答案 0 :(得分:1)

我想你可能正在寻找JSONSelect。它使得访问复杂JSON文档中的数据变得容易,但看起来像CSS。

Check out the examples,它看起来非常像你想要做的。

例如,要获得ger:q的eng版本,您可以.ger:val("q") ~ .eng

您可以download it here将其与JSONSelect.matchJSONSelect.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!"
  }
};