2017-09-13 57 views
0

所以我有一個地圖(所謂的「相關信息」鍵值對象),看起來像這樣:搜索功能僅適用於特定的密鑰值?

1: [1, "alfred", "mainstreet"] 
    2: [2, "james" , "something"] 
    3: [3, "chris" , "bla"] 

現在我只想尋找第二。行,然後返回鍵的所有值。意味着我只能搜索「阿爾弗雷德」,「詹姆斯」或「克里斯」。

所以如果我在我的鍵盤輸入中搜索:「bla」,則應該顯示NOTHING。

infos = (MySearchedText) ? infos.filter(matchesText) : infos; 

var regExp = new RegExp(MySearchedText, "i"); 
var matchesText = function(value) { 
    return regExp.test(value); 
} 

使用這些函數,它將ALL值與搜索到的文本進行比較。意思是如果我甚至鍵入「bla」它顯示整個第三鍵。

+0

'infos'是不是有效的對象 – adeneo

+0

所以,是'infos'一個對象或一個數組? – Cerbrus

+0

已編輯。它是一個具有多個值的對象 – randomcat

回答

0

像這樣的事情也許......

var arr = [ 
    [1, "alfred", "mainstreet"], 
    [2, "james" , "something"], 
    [3, "chris" , "bla"] 
]; 

var search = function(name){ 

    return arr.filter(function(a){ 
     return a[1].indexOf(name) != -1 
    }) 

} 

search('alfred'); // an array with results 
0

你可以採取的對象鍵和期望字符串指定索引處檢查值。

function getKeys(object, index, value) { 
 
    return Object.keys(object).filter(function (k) { 
 
     return object[k][index].indexOf(value) !== -1; 
 
    }); 
 
} 
 

 
var data = { 1: [1, "alfred", "mainstreet"], 2: [2, "james" , "something"], 3: [3, "chris" , "bla"] }; 
 

 
console.log(getKeys(data, 1, 'a')); 
 
console.log(getKeys(data, 2, 'bla'));

相關問題