2

我有一个对象数组。每个对象都是一个自治市,带有它的名称、替代拼写和识别号。

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() 来搜索这个结构。任何人都可以帮忙吗?

4

2 回答 2

1

只需使用Array::indexOf

var theMatch = munis.find(function(el) { 
   return el.name === userInput ||
     el.alt.indexOf(userInput) > -1;
});
于 2013-11-11T18:59:46.650 回答
0

您可以使用嵌套查找功能:

var theMatch = munis.find(function(el) { 
    return el.name === userInput || el.alt.find(userInput); 
});

如果您使用 indexOf 它将仅返回索引,但这将返回包含该值的对象。

于 2013-12-14T10:27:15.910 回答