我基本上试图实现对任何给定值的搜索应该在对象键值数组中查找(也可以是嵌套对象)。这是一个例子。下面的函数将采用一个对象和一个查询来搜索数组对象键值。因此,如果找到匹配项,它应该从该数组中进行过滤。
function searchObj (obj, query) {
for (var key in obj) {
var value = obj[key];
if (typeof value === 'object') {
searchObj(value, query);
}
if (typeof value === 'string' && value.toLowerCase().indexOf(query.toLowerCase()) > -1) {
return obj;
}
}
}
这是虚拟数据
var demoData=[
{id:1,desc:{original:'trans1'},date:'2017-07-16'},
{id:2,desc:{original:'trans2'},date:'2017-07-12'},
{id:3,desc:{original:'trans3'},date:'2017-07-11'},
{id:4,desc:{original:'trans4'},date:'2017-07-15'}
];
这是我正在过滤匹配对象的数组
var searchFilter = demoData.filter(function(obj){
return searchObj(obj, 'trans1');
});
console.log(searchFilter);
例如:如果我打电话searchObj(obj,'2017-07-15')
它返回该特定对象,但如果我搜索trans1
或者简单地trans
它应该查看该对象,然后返回匹配项。我现在有点陷入困境,任何帮助将不胜感激。谢谢。