1

オブジェクトで構成されているこの従業員配列を検索したいのですが、 ---> search_for_string_in_array ('aaron', employees) ; を渡す場合のように、任意のテキストを検索できるはずです。「配列に値が存在します」と表示されるか、その方法である場合は助けてください..

//here is the employeee  array ...
  var employees =[{
                          name:"jacob",
                          age :23,
                          city:"virginia",
                          yoe :12,
                          image :'a.jpg'
                       },
                       {
                          name:"aaron",
                          age :21,
                          city:"virginia",
                          yoe :12,
                          image :'b.jpg'
                       },
                       {
                          name:"johnny",
                          age :50,
                          city:"texas",
                          yoe :12,
                          image :'c.jpg'
                       },
                       {
                          name:"jacob",
                          age :12,
                          city:"virginia",
                          yoe :12,
                          image :'a.jpg'
                       }];

これは、配列内で検索機能を実行する関数です。

    function search_for_string_in_array(search_for_string, employees) 
            {
                for (var i=0; i < employees.length; i++) 
                {
                    if (employees[i].match(search_for_string))
                    { 
                        return 'Value exists in array';
                    }
                }
               return 'Value does NOT exist in array';
            }

検索する値と配列を関数に渡すだけで、文字列が配列値の一部として存在するかどうかがわかります。

4

3 に答える 3

0

ラインを交換するだけ

if (employees[i].match(search_for_string))

これとともに:

if (employees[i].name.match(search_for_string))
于 2013-04-24T11:53:36.387 に答える
0

試す

function search(text) {
    text += '';
    var i, obj;
    var array = [];
    for (i = 0; i < employees.length; i++) {
        var obj = employees[i];
        for (var key in obj) {
            if (obj.hasOwnProperty(key)) {
                if (('' + obj[key]).indexOf(text) >= 0
                        || ('' + key).indexOf(text) >= 0) {
                    array.push(obj);
                    break;
                }
            }
        }
    }

    return array.length > 0;
}

デモ: Fiddle1 Fiddle2

于 2013-04-24T12:12:46.090 に答える
0

配列の構造がわかっている場合は、おそらくそれをループして各値をテストする必要があります。構造がわからない場合は、配列を JSON に文字列化して正規表現することができます (ただし、安全ではありません)。

function search_for_string_in_array(str, arr) {
    var json = JSON.stringify(arr);
    return new RegExp(':\"'+str+'\"','g').test(json);
}
于 2013-04-24T11:51:52.583 に答える