2016-05-07 9 views
0

私は配列membersを持っています。私はkeyupアクションで検索火災を持ってindexOfを使用してJavaScript/jQueryで配列キーを検索する方法

Array

:この配列はそうのような指標(例えば「ジョン・スミス」)と「度」と「ID」を持つ配列、などの名前があります。 (インデックス)メンバー名を検索することになった後、コンソールに出力、一致するメンバーの名前をされています

function memberSearch(){ 
    var $input = $("#guestsearch>input"); 
    var val = $input.val(); 
    console.log(val); 

    $.each(members, function(i,v){ 
     if(i.indexOf(val)>-1){ 
      console.log(members[i]); 
     } 
    }) 
} 

はしかし、これは検索値val除き、何も出力しません。 $.eachの機能がちょうどconsole.log(i)であっても、何も出力されません。

手動でコンソールにconsole.log(members)と入力すると、上記のスクリーンショットが表示されます。

membersは、関数のこのセグメントが移入されます。

$.each(json.response.data[0].members, function(i,v){ 
    var m = json.response.data[0].members[i]; 
    var name = m.name; 
    if(name.typeof!=="undefined"&&name!=""&&name!=null&&name.length>0){ 
     members[name] = []; 
     members[name]["degree"] = m.degree; 
     members[name]["id"] = m.id; 
    } 
}) 

は、どのように私は、この検索を動作させることができますか?

+0

メンバーの定義はどこですか? – JordanHendrix

+0

@JordanHendrix任意の関数の外に - varメンバー= []; '、それは別の関数によって設定されます – Ben

+0

メンバー検索でメンバーを記録できますか? – JordanHendrix

答えて

1

メンバーがキー/値のペアのように見えるオブジェクトの場合は、Object.keys(objVariable)を使用してループするオブジェクトのキーを取得し、比較/正規表現のロジックをオンにできます。メンバーは...

var matchingUsers = members.filter(function(){ 
    var username = Object.keys(this)[0]; 

    return (/* match username to whatever */); 
}); 

それらのオブジェクトを含む配列である場合

Object.keys(members).forEach(function(name){ 
    if (/* logic to match on name */) { 
     console.log(members[name]); 
    } 
}); 

そうでなければ次にmatchingUsersはあなたの基準に合格したすべてのユーザーを含む配列になります。

+0

パーフェクト - ありがとうございます。 – Ben

関連する問題