Как я могу использовать sugar.js для поиска в массивах объектов?
У меня есть массив объектов. Каждый объект - это муниципалитет, с его названием, альтернативным написанием и идентификационным номером.
var munis = [
{
name: 'St. Louis Hills',
alt: 'Saint Louis Hills',
nhdNum: 992
},
{
name: 'Mount Pleasant',
alt: 'Mt. Pleasant',
nhdNum: 1004
}
];
В моем приложении пользователи могут ввести имя. Затем я использую Sugar.js для поиска в этом массиве и возврата конкретного объекта, который соответствует тому, что они ввели, например:
var theMatch = munis.find(function(el) {
return el.name === userInput || el.alt === userInput;
});
Это хорошо работает, но позволяет мне использовать только одно каноническое имя и одно альтернативное написание. Я хотел бы иметь несколько альтернатив, как это:
{
name: 'Mount Pleasant',
alt: ['Mt. Pleasant','Mt Pleasant'],
nhdNum: 1004
}
Но я не могу понять, как адаптировать Sugar.find() для поиска в этой структуре. Кто-нибудь может помочь?
2 ответа
Просто используйте Array::indexOf
:
var theMatch = munis.find(function(el) {
return el.name === userInput ||
el.alt.indexOf(userInput) > -1;
});
Вы можете использовать вложенную функцию поиска:
var theMatch = munis.find(function(el) {
return el.name === userInput || el.alt.find(userInput);
});
Если вы используете indexOf, он вернет только индекс, но вернет объект, содержащий значение.