前端项目实战57-拼接存在和未存在的对象

简介: 前端项目实战57-拼接存在和未存在的对象
const parseFilters = (filter: any, defaultListOp: any) => {
    const result: any = {}
    console.log(filter,"filter---1")
    //{is_delete: 0, name@like: '我是测试'} 'filter---1'
    console.log(defaultListOp,"defaultListOp---2")
    //eq defaultListOp---2
    Object.keys(filter).forEach(function (key) {
        // key: the name of the object key
        //属性按照@分割
        const splitKey = key.split('@');
        console.log(splitKey,"splitKey---2")
        //['is_delete'] 'splitKey---2'  ['name', 'like'] 'splitKey---2'
        //如果长度为2 取出数组的属性值
        const operation = splitKey.length == 2 ? splitKey[1] : defaultListOp;
        console.log(operation,"operation")
        let values;
        //如果包含like这个属性 拉取到当前的值 拿取到对应的属性的key值
        if (operation.includes('like')) {
            values = filter[key].trim().split(' ');
        } else {
            values = [filter[key]];
        }
        console.log(values,"values")
        //[0] 'values' ['我是测试'] 'values'
        values.forEach((value: any) => {
            //进行拼接
            // if operator is intentionally blank, rpc syntax
            let op = operation.includes('like') ? `${operation}.*${value}*` : operation.length == 0 ? `${value}` : `${operation}.${value}`;
            console.log(op,"oplist---3")
            console.log(splitKey,"splitKey")
            if (result[splitKey[0]] === undefined) {
                // first operator for the key, we add it to the dict
                result[splitKey[0]] = op;
                console.log(result[splitKey[0]],"result---test1")
            }
            else {
                if (!Array.isArray(result[splitKey[0]])) {
                    // second operator, we transform to an array
                    result[splitKey[0]] = [result[splitKey[0]], op]
                    console.log(result[splitKey[0]],"result---test2")
                } else {
                    // third and subsequent, we add to array
                    result[splitKey[0]].push(op);
                    console.log(result[splitKey[0]],"result---test3")
                }
            }
        });
    });
    console.log(result,"result--zoom")
    return result;
}
相关文章
|
8天前
|
缓存 前端开发 搜索推荐
前端性能优化实战:提升网页加载速度
前端性能优化实战:提升网页加载速度
|
16天前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
33 2
|
17天前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
28 2
|
23天前
|
存储 缓存 算法
前端算法:优化与实战技巧的深度探索
【10月更文挑战第21天】前端算法:优化与实战技巧的深度探索
19 1
|
24天前
|
人工智能 资源调度 数据可视化
【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践
2024长沙·中国1024程序员节以“智能应用新生态”为主题,吸引了众多技术大咖。合合信息展示了“智能文档处理百宝箱”的三大工具:可视化文档解析前端TextIn ParseX、向量化acge-embedding模型和文档解析测评工具markdown_tester,助力智能文档处理与知识管理。
|
24天前
|
JSON 前端开发 数据格式
前端的全栈之路Meteor篇(五):自定义对象序列化的EJSON介绍 - 跨设备的对象传输
EJSON是Meteor框架中扩展了标准JSON的库,支持更多数据类型如`Date`、`Binary`等。它提供了序列化和反序列化功能,使客户端和服务器之间的复杂数据传输更加便捷高效。EJSON还支持自定义对象的定义和传输,通过`EJSON.addType`注册自定义类型,确保数据在两端无缝传递。
|
1月前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
1月前
|
前端开发 数据安全/隐私保护
前端技术实战:React Hooks 实现表单验证
【10月更文挑战第1天】前端技术实战:React Hooks 实现表单验证
|
1月前
|
JSON 前端开发 数据格式
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
文章详细讲解了在SpringMVC中如何使用`@RequestMapping`进行路由映射,并介绍了前后端参数传递的多种方式,包括传递单个参数、多个参数、对象、数组、集合以及JSON数据,并且涵盖了参数重命名和从URL中获取参数的方法。
73 0
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
|
1月前
|
资源调度 前端开发 安全
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
80 0