从json数组中查找满足条件的特定元素的值

时间:2012-09-01 17:07:33

标签: javascript jquery json arrays

我跟随json数组的朋友

[
   {
      "Rate":100.0,
      "MaterialID":"BOLT",
      "BrandName":"",
      "Description":"",
      "Unit":"KG",
      "TokenNumber":2
   },
   {
      "Rate":null,
      "MaterialID":"PLYWOOD",
      "BrandName":"",
      "Description":"",
      "Unit":"FT",
      "TokenNumber":2
   },
   {
      "Rate":null,
      "MaterialID":"SCREW 1.5 INCH",
      "BrandName":"",
      "Description":"",
      "Unit":"KG",
      "TokenNumber":2
   }
]

我想了解找到materialID值为PLYWOOD的元素的最短路径。
我可以使用for循环来完成它。但我想知道一些像

这样的捷径

var unit = jsonArray[<whiere materialID == 'PLYWOOD']['Unit'];

如果需要,您可以使用jQuery

3 个答案:

答案 0 :(得分:5)

您可以使用$ .grep

http://api.jquery.com/jQuery.grep/

答案 1 :(得分:2)

jQuery不是必需的,所以你可以这样做:

function findItem(arr, key, value) {
    for (var i = 0; i < ARR.length; i++) {
       if (arr[i][key] === value) {
           return(i);
       }
    }
    return(-1);
}

var plywoodIndex = findItem(data, "MaterialID", "PLYWOOD");
if (plywoodIndex !== -1) {
    // do something with the plywoodIndex object here
}

答案 2 :(得分:1)

正如拉格所说的那样。我找到了完成工作的方法。我设计了以下函数,可以返回具有指定materialID的对象。

假设:materials是数组

function getMaterialFromArray(materialID) {
    return $.grep(materials, function (n, i) {
        return(n.MaterialID == materialID);
    })[0];
}