2017-09-13 5 views
0

だから私はこのようになりますマップ(「に関する情報」と呼ばれるキーと値のオブジェクト)を持つ:検索機能はキーの特定の値に対してのみ機能しますか?

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

今、私は第二を検索したいです。次に、キーのすべての値を戻します。私は "アルフレッド"、 "ジェームス"、または "クリス"のみを検索することができます。

キーボードの入力で「bla」を検索すると、何も表示されません。

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

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

これらの機能を使用して、ALL値と検索されたテキストを比較します。私が "bla"と入力すると、3番目のキー全体が表示されます。

+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'));

関連する問題