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

时间:2013-11-05 01:28:46

标签: 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
    }
];

在我的应用程序中,用户可以输入名称。然后我使用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 个答案:

答案 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,它将仅返回索引,但这将返回包含值的对象。