如何根据其他JSON数据选择JSON中的数据?使用Javascript

时间:2012-09-26 03:29:01

标签: javascript json

是否可以使用同一JSON对象中的其他数据选择JSON对象中的某些数据。与MySQL类似。例如:

myObj = {"elements" : [ { "name" : "Hydrogen", "symbol" : "H" }, { "name" : "Silver", "symbol" : "Ag" }]};

我想选择符号为“H”的“氢”。而不是必须输入这样的东西:

document.getElementByID("TEST").innerHTML = myObj.elements[0].name;

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以定义一个功能来为您完成。

document.getElementByID("TEST").innerHTML = findNameBySymbol(myObj.elements, 'H');

function findNameBySymbol(elements, symbol) {
  for (var i = 0; i < elements.length; i += 1) {
    if (elements[i].symbol === symbol) {
      return elements[i].name;
    }
  }
}

更好的是,如果你对数据的结构有任何控制,你可以这样构造它:

myObj = {"H": "Hydrogen", "Ag": "Silver"};

然后查找就像myObj['H']一样简单。

答案 1 :(得分:1)

在大多数情况下,Tyler Hoilen的解决方案已经足够好了。如果您有一个非常大的数据,您可以尝试将数据转换为哈希表,这将提供对元素的快速访问。只需确保每个元素都有一个唯一的符号。

function convertToHash(data) {
  var hash = {};
  for (var i = 0; i < data.length; i++) {
    hash[data[i].symbol] = data[i].name;
  }
  return hash;
}

var hash = convertToHash(myObj.elements);
document.getElementByID("TEST").innerHTML = hash["H"];