Поиск JSON с использованием Javascript - PullRequest
0 голосов
/ 24 апреля 2011
  [
{"lastName":"Noyce","gender":"Male","patientID":19389,"firstName":"Scott","age":"53Y,"}, 
{"lastName":"noyce724","gender":"Male","patientID":24607,"firstName":"rita","age":"0Y,"}
]

Выше приведены мои данные JSON

  var searchBarInput = TextInput.value;

    for (i in recentPatientsList.length) {
     alert(recentPatientsList[i].lastName
    }

Я получаю предупреждение об этом.Теперь у меня есть TextInput, который при наборе должен искать Json и дать мне результат.Я ищу значение фамилии.

Как мне взять значение и выполнить поиск в моем JSON.

Ответы [ 2 ]

3 голосов
/ 24 апреля 2011

Это:

var searchBarInput = TextInput.value;

for (i in recentPatientsList.length) {
 alert(recentPatientsList[i].lastName); // added the ) for you
}

неверно. То, что вы должны сделать, чтобы перебрать массив:

for (var i = 0; i < recentPatientsList.length; ++i) {
  alert(recentPatientsList[i].lastName);
}

Механизм "for ... in" не предназначен для итерации по индексированным свойствам массива.

Теперь, чтобы сделать сравнение, вам нужно просто найти имя в текстовом поле, чтобы оно совпадало с полем «lastName» записи списка:

for (var i = 0; i < recentPatientsList.length; ++i) {
  if (searchBarInput === recentPatientsList[i].lastName) {
    alert("Found at index " + i);
  }
}
1 голос
/ 24 апреля 2011

Не следует использовать for..in для перебора массива.Вместо этого используйте обычный старый цикл for.Чтобы получить объекты, соответствующие фамилии, отфильтруйте массив.

var matchingPatients = recentPatientsList.filter(function(patient) {
    return patient.lastName == searchBarInput;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...