我想搜索这个由对象组成的员工数组,我应该能够搜索任何文本,如果我通过了---> search_for_string_in_array('aaron',员工);它应该显示我'数值存在于数组'或者它的方式请帮助我..
//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';
}
只需将值搜索并将数组传递给函数,它就会告诉您字符串是否作为数组值的一部分存在。
答案 0 :(得分:0)
如果你知道数组的结构,你应该只是遍历它并测试每个值。如果您不知道结构,可以将数组字符串化为JSON并对其进行正则表达式(尽管它不会那么安全):
function search_for_string_in_array(str, arr) {
var json = JSON.stringify(arr);
return new RegExp(':\"'+str+'\"','g').test(json);
}
答案 1 :(得分:0)
只需替换
行if (employees[i].match(search_for_string))
用这个:
if (employees[i].name.match(search_for_string))
答案 2 :(得分: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;
}