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

如果您知道 Array 的结构,您可能应该遍历它并测试每个值。如果您不知道结构,您可以将数组字符串化为 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 回答
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 回答