У меня такой длинный массив:
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. Никаких других библиотек (как другие рекомендовали мне раньше).
Буду признателен за всю помощь, спасибо
Итак, если вы можете использовать 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. Он вызывается с аргументом index;)