例如,我们有obj
const obj {
user: {
firstName: 'ivan',
lastName: 'Petrov',
role: {
roleID: '111',
roleName: 'admin',
},
},
user: {
firstName: 'Vlad',
lastName: 'Segeda',
role: {
roleID: '222',
roleName: 'Moderator',
},
}
}
我需要搜索和显示数据。我创建了此过滤器,其中“数据”-其对象,“参数”-其来自搜索/过滤器输入的值。
export const filter = (data, params) => {
const keys = data[0] ? Object.keys(data[0]) : [];
return data.filter((item) => {
return keys.some(key => item[key].toString().toLowerCase().indexOf(params.toLowerCase().toString()) !== -1)
});
};
但是此助手不能正常工作。当我输入“管理员”或“主持人”时。它什么也不返回。
我不知道,也许我应该使用forEach。...
[请帮我
并且如果obj是一个对象,则作为对象键的用户是重复的
const checkNestedRecursive = (obj, params) => {
let flag = false;
for(let key in obj) {
if(typeof key === 'object') flag = flag || checkNestedRecursive(key, params);
if(!flag)
flag = flag || obj[key].toString()
.toLowerCase()
.indexOf(params.toLowerCase().toString()) !== -1
if(flag) return flag;
}
return flag;
}
然后您可以过滤用户:
users.filter(user => checkNestedRecursive(user, params));