我有一个对象数组。每个对象都是一个自治市,有它的名字,备用拼写和识别号码。
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()来搜索这个结构。有人可以帮忙吗?
答案 0 :(得分:1)
只需使用Array::indexOf
:
var theMatch = munis.find(function(el) {
return el.name === userInput ||
el.alt.indexOf(userInput) > -1;
});
答案 1 :(得分:0)
您可以使用嵌套查找功能:
var theMatch = munis.find(function(el) {
return el.name === userInput || el.alt.find(userInput);
});
如果使用indexOf,它将仅返回索引,但这将返回包含值的对象。