2013-11-05 47 views
2

我有一個對象數組。每個對象都是一個自治市,它的名稱,替代拼寫和識別號碼。如何使用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 
} 

但我無法弄清楚如何適應糖的.find()來搜索這個結構。誰能幫忙?

+1

我不知道sugar.js,但似乎.find()需要一個函數。我猜這個函數可以做任何事情,它不需要是一個具有布爾表達式的單個返回語句。因此,編寫一個for循環並遍歷列表。 –

+0

有人在您的評論後不久就發佈了您的建議併發布了算法。修改後的版本適用於我。唉,這個人刪除了他們的答案,現在我不能接受它。 – Kirkman14

回答

1

只需使用Array::indexOf

var theMatch = munis.find(function(el) { 
    return el.name === userInput || 
    el.alt.indexOf(userInput) > -1; 
}); 
0

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

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

如果您使用的indexOf它只會返回指數但這將返回包含該值的對象。

相關問題