搜索数组中的部分匹配

时间:2014-04-27 11:36:44

标签: javascript jquery arrays

我有一个像这样的长数组:

var wifiArr = {
  "results": {
    "fields": [
      "Name",
      "Address",
      "Suburb",
      "Latitude",
      "Longitude"
    ],
    "rows": [
      {
        "Name": "7th Brigade Park, Chermside",
        "Address": "Delaware St",
        "Suburb": "Chermside",
        "Latitude": -27.37893,
        "Longitude": 153.04461
      },
.
. total 55 of those
.
      {
        "Name": "Annerley Library Wifi",
        "Address": "450 Ipswich Road",
        "Suburb": "Annerley, 4103",
        "Latitude": -27.50942285,
        "Longitude": 153.0333218
      },

    ]
  }
}

我正在尝试找到每个'姓名','郊区'或'地址',其中包含例如'ann'的名称,并返回这些项目的索引,相对于'行'..就这样我可以稍后使用

访问所有详细信息
var wifis = wifiArr.results.rows;

// returned index
console.log(wifis[index].Latitude);

我尝试了几个不同的东西,但没有一个按我的意愿工作(通常他们只给出单个索引)。我唯一可以使用的是普通的Javascript和jQuery。没有其他图书馆(正如其他人之前推荐的那样)。

感谢所有帮助,谢谢

1 个答案:

答案 0 :(得分:0)

因此,如果您可以使用jQuery,那么您可以尝试使用jQuery.grep。并在您的代码中

arr = jQuery.grep(wifiArr.results.rows, function(row, index) {
  return row.Name.indexOf('ann') > -1 
         || row.Address.indexOf('ann') > -1
         || row.Suburb.indexOf('ann') > -1;
});

以下是http://jsfiddle.net/ry5AC/1/

的示例

此外,如果您支持较新的浏览器,则可以使用过滤器功能。 MDN上的相关article。它用index参数调用;)