免费功能网站,紧急域名升级更换通知,国建设银行e路通网站申,wordpress表单微信实现一个 query 方法#xff0c;实现对数据的链式查询和处理 要求如下 query 传入参数为原始数据#xff08;数组格式#xff0c;每个元素都是对象#xff09; 通过进行链式调用对数据执行操作#xff0c;支持的方法有where(predicate): 根据参数的条件进行筛选#xff0…实现一个 query 方法实现对数据的链式查询和处理 要求如下 query 传入参数为原始数据数组格式每个元素都是对象 通过进行链式调用对数据执行操作支持的方法有where(predicate): 根据参数的条件进行筛选参数与 [].filter 的参数类似 orderBy(key, desc): 根据 key 的值进行排列默认升序排列当第二个参数为 true 时降序排列 groupBy(key): 根据 key 的值对数据元素进行分组合并为二维数组 execute(): 执行所有处理并返回最终结果 执行 execute 方法时才真正执行操作并返回结果 const data [{ name: foo, age: 16, city: shanghai },{ name: bar, age: 24, city: hangzhou },{ name: fiz, age: 22, city: shanghai },{ name: baz, age: 19, city: hangzhou }];query(data).where(item item.age 18).orderBy(age).groupBy(city).execute();// 结果返回[[{ name: baz, age: 19, city: hangzhou },{ name: bar, age: 24, city: hangzhou },],[{ name: fiz, age: 22, city: shanghai },]]function query(data) {const _data datalet dealing_data nullconst funs {where,orderBy,groupBy,execute}function where(cb) {dealing_data _data.filter(element cb(element));return funs}function orderBy(key, desc) {const deal_data dealing_data ?? _datadeal_data.sort((a, b) !desc ? a[key] - b[key] : b[key] - a[key])return funs}function groupBy(key) {const deal_data dealing_data ?? _dataconst map {}deal_data.forEach(element {if (map[element[key]]) {map[element[key]].push(element)} else {map[element[key]] [element]}});dealing_data Object.values(map).reduce((pre, cur) {pre.push(cur)return pre}, [])return funs}function execute() {const deal_data dealing_data ?? _dataconsole.log(最终结果, deal_data)return deal_data}return funs}