2017-09-13 27 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'));

相关问题