Javascript 使用对象数组的所有字段进行字符串搜索

Javascript 使用对象数组的所有字段进行字符串搜索,javascript,salesforce-lightning,Javascript,Salesforce Lightning,我有一个对象列表/数组,它在一个表中对齐。我需要实现一个搜索功能,而不考虑任何特定的字段。换句话说,无论我在搜索文本框中搜索什么,如果表的任何字段值包含字符串或与字符串匹配,它都应该显示这些记录 我已经编写了一个代码来实现这个功能。但我觉得它在算法方面效率不高 Input : <br/> 1. List of objects : [{ id : 1 , name : 'abc' , phone : 1234}, { id : 2 , name : 'abd' , phone :

我有一个对象列表/数组,它在一个表中对齐。我需要实现一个搜索功能,而不考虑任何特定的字段。换句话说,无论我在搜索文本框中搜索什么,如果表的任何字段值包含字符串或与字符串匹配,它都应该显示这些记录

我已经编写了一个代码来实现这个功能。但我觉得它在算法方面效率不高

Input : <br/>
1. List of objects : [{ id : 1 ,  name : 'abc' , phone : 1234}, { id : 2 ,  name : 'abd' , phone : 3456} , { id : 3 ,  name : 'xyz' , phone : 5678}]
2. Field Api Names = ['id','name','phone']
3. Search string: '3'

Output: 
All 3 objects in the list must be the result. As phone number contains the number 3 in List[0] and List[1] + Id field of List[2] contains value 3.
代码:

我需要知道什么是搜索对象列表中所有字段的最佳搜索功能。
功能是针对Salesforce的闪电组件

,我猜你想把所有的东西作为一个字符串进行比较,所以你可以考虑用适当的测试函数过滤:

var记录=[ {id:1,姓名:'abc',电话:1234}, {id:2,姓名:'abd',电话:3456}, {id:3,姓名:'xyz',电话:5678} ]; 函数findInValuesarr,value{ value=Stringvalue.toLowerCase; 返回arr.filtero=> Object.entrieso.someentry=> Stringentry[1]。toLowerCase.IncludeValue ; } console.logfindinvalues记录,3; console.logfindinvalues记录“a”; console.logfindinvalues记录“z”;
console.logfindInValuesrecords,567;不区分大小写的搜索将需要普通大小写。@Rajesh-I将其留给OP,但无论如何都包括在内。@RobG真棒。非常感谢你。
function searchRecord(fieldApiList,records,searchStr){
    var filteredResults = []
    for(var i = 0 ; i < records.length ; i++){
        for(var j = 0 ; j < fieldApiList.length ; j++){
            var filedApi = fieldApiList[j];
            if(records[i].hasOwnProperty(filedApi)){
                var data = String(records[i][filedApi]).toLowerCase();
                if( data.includes(searchStr.toLowerCase())){
                    filteredResults.push(records[i]);
                }
            }
        }
    }
    return filteredResults;
}

// Invoke the method
var records = [
           { id : 1 ,  name : 'abc' , phone : 1234}, 
           { id : 2 ,  name : 'abd' , phone : 3456}, 
           { id : 3 ,  name : 'xyz' , phone : 5678}
];
var fieldApiList = ['id','name','phone'];
var searchStr = '3';
var searchResults = searchRecord(fieldApiList,records,searchStr)