搜索功能仅适用于某个键的特定值?

时间:2017-09-13 09:46:51

标签: javascript object hashmap

所以我有一个地图(键值对象称为“信息”),如下所示:

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

现在我想只搜索第二个。行,然后返回键的所有值。意味着我只能搜索“alfred”,“james”或“chris”。

因此,如果我在键盘输入中搜索:“bla”,则应显示NOTHING。

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

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

使用这些功能,它会将所有值与搜索到的文本进行比较。意味着如果我甚至输入“bla”它会显示整个第3个键。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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'));