一个前端,爱跑步、爱吉他、爱做饭、爱生活、爱编程、爱南芳姑娘,爱我所爱。世间最温暖又无价的是阳光、空气与爱,愿它们能带你去更远的地方。

  • 文章
  • 心情
  • 照片墙
  • 留言板
  • 工具
  • 友链
  • biaoblog

    专注web开发技术分享

    mongoose根据关键字模糊查询(包括前端模糊查询)

    技术 212 2019-07-12 17:56

    后端:

    使用new RegExp()实例对象

    eg:

    const Schema = mongoose.model("modelName")
    let reg = new RegExp("查询关键词")
    awati Schema.fine || where(say:reg).exec().then(res=>{
    成功回调})
    .catch(err=>{
    失败回调
    })
    

    前端:

    eg:

    var arr = ['草莓','苹果']
    newArr = []
    for(var i = 0;i<arr.length;i++){
    if(arr[i].indexOf('草')>=0){
    newArr.push(arr[i])
    }
    console.log(newArr) //// [草莓]
    }
    

    前端映射添加接口字段

    两种方法es5通过indexOf(),es6通过map()、...拓展运算符等

    // 接口数据

    var resObj = [{id:1},{id:0},{id:2}]
    // 自己定义数组
    selfObj = [
    {id:0,name:'灯'},
    {id:1,name:'无线开关'},
    {id:2,name:'空调'},
    ]
    resArr = []
    selfArr = []
    

    //期望:给接口数据添加name字段 需要跟自己定义的数组id 对应起来

    //例如:接口数据 id为0的的对象 添加name为灯

    // id为1的的对象 添加name为无线开关

    es5

    resObj.forEach(function(e){resArr.push(e.id)})
    selfObj.forEach(function(e){selfArr.push(e.id)})
    console.log(resArr)
    for(var i =0;i<selfArr.length;i++){
    //遍历出自定义数组每一个id 在接口 id 数组中的位置
    // 接口id.indexOf(每一个数组Id) 返回每一个自定义数组id在接口数组id中的位置
    //然后通过这个的位置 去给接口数组添加name字段 添加的内容为:这个位置下自定义数组的name
    var index = resArr.indexOf(selfArr[i])
    //添加字段
    resObj[i].name = selfObj[index].name
    }
    console.log(resObj)
    

    es6

    //方案2 通过自定义数组 映射新的对象 id为key name为值
    var newObj = {};
    selfObj.forEach( item => { newObj[item.id] = item.name})
    console.log(newObj)
    // 一个是空箭头函数,一个是箭头函数返回一个空对象
    // 返回一个空对象:map(ele=>({}))
    // 空的箭头函数: map(ele=>{})
    // 方式1
    resObj = resObj.map(ele =>({...ele,name:newObj[ele.id]}))
    // 方式2
    resObj = resObj.map(ele=>{return {...ele,name:newObj[ele.id]}})
    // 两种方式结果是一样的
    console.log(resObj)
    


    上一篇:vuex的学习

    下一篇:React学习记录

    文章评论

    评论列表(0