如何修改搜索函数使其仅显示特定用户的记录?
解决方案
要实现仅显示同时匹配当前用户名(C列)和搜索值的行,只需在搜索逻辑中同时加入用户校验和搜索值校验即可,修改后的代码如下:
function displayOwnRecordSearch(currentUser, searchedValue){ var spreadsheetId = ""; var sheetName = ""; var column = 3; // C列 var [, ...data] = Sheets.Spreadsheets.Values.get(spreadsheetId, sheetName).values; var arr = []; // 校验当前用户的通用函数 const validateUser = (user) => { let regex = new RegExp(currentUser, 'i'); return regex.test(user); }; if(searchedValue !== undefined) { // 校验搜索值的函数 const validateSearch = (query) => { let regex = new RegExp(searchedValue, 'i'); return regex.test(query); }; data.forEach(d => { // 同时满足:当前用户匹配C列 + 搜索值匹配行内内容 if (validateUser(d[column - 1]) && validateSearch(d)) { arr.push(d); } }); } else { // 无搜索值时,仅显示当前用户的记录 data.forEach(d => { if (validateUser(d[column - 1])) { arr.push(d); } }); } return arr; }
修改说明
- 抽离了校验当前用户的通用函数
validateUser,避免重复代码 - 在搜索分支中新增
validateUser(d[column - 1])校验,确保只有当前用户的记录才会被纳入筛选范围 - 保留原有的不区分大小写正则匹配逻辑,仅当行数据同时满足用户匹配和搜索值匹配时,才会被加入结果数组
内容的提问来源于stack exchange,提问作者codeTester-
相关产品推荐
相关产品推荐

