Javascript 如何使用sugar.js在对象中搜索数组?

Javascript 如何使用sugar.js在对象中搜索数组?,javascript,arrays,object,sugar.js,Javascript,Arrays,Object,Sugar.js,我有一个对象数组。每个对象都是一个自治市,有其名称、备选拼写和识别号 var munis = [ { name: 'St. Louis Hills', alt: 'Saint Louis Hills', nhdNum: 992 }, { name: 'Mount Pleasant', alt: 'Mt. Pleasant', nhdNum: 1004 } ]; 在我的

我有一个对象数组。每个对象都是一个自治市,有其名称、备选拼写和识别号

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
}
这很有效,但只允许我使用一个规范名称和一个备选拼写。我想要多个备选方案,如下所示:

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()来搜索这个结构。有人能帮忙吗

只需使用
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,它将只返回索引,但这将返回包含该值的对象。

我不知道sugar.js,但.find()似乎需要一个函数。我猜这个函数可以做任何事情,它不需要是一个带有布尔表达式的返回语句。因此,写一个for循环并在列表上迭代。有人采纳了你的建议,在你的评论后不久发布了一个算法。一个改进版对我很有用。唉,那个人删除了他们的答案,现在我无法接受。