美文网首页
js总结方法(待整理)

js总结方法(待整理)

作者: Yluozi | 来源:发表于2020-11-26 10:29 被阅读0次

过滤数组某元素

        //过滤集合元素
        /* list要过滤的数组
        *  key1监控的对象
        * value监控对象匹配的值
        * key2返回的对象,无则返回全部数组
        */
        function setfilter(list, key1, value, key2) {
            var data = list.filter(function (item) {
                return item[key1] == value;
            })
            var list = [];
            if (!!key2) {
                // data.forEach(e => {
                //     list.push(e[key2]);
                // })
                data.forEach(function (e) {
                    list.push(e[key2]);
                });
                return list;
            } else {
                return data;
            }
        }

向一个对象数组里面添加新的属性
var arry= [{a:11,b:22,c:33,d:44},{a:11,b:0,c:0,d:44},{a:11,b:22,c:99,d:99}];
var arry2=[];
arry.map(((item, index)=> {
arry2.push(Object.assign({},item,{mess1:item.c,mess2:item.d}))
}))
console.log(arry2);
/**判断文本字符串长度是否超出length,超出则截取返回
* @param text 文本内容
* @param length 预设长度
*/
Vue.prototype.doTextMore = function (text, length) {
var ss = [];
if (text.length > length) {
ss.push(text.substring(0, length));
ss.push(true);
} else {
ss.push(text);
ss.push(false);
}
return ss;
}

/**
 * 根据路由获取查询视图的名称
 */
Vue.prototype.getQueryDbByRoute = function (route) {

    if (route.query && route.query.dbCode) {
      return route.query.dbCode;
    } else {
      var path = route.path;
      if (path.indexOf('/paper') > -1) {
        return 'CLKT';
      } else if (path.indexOf('/case') > -1) {
        return 'CLKCTOTAL';
      } else if (path.indexOf('/law') > -1) {
        return 'CLKLK';
      } else {
        return 'CLKDTOTAL';
      }
    }

  },


/* @param 去除字符串中的“;”与“,”与“、”并转换为数组形式
 * @param text 文本内容
 */
Vue.prototype.doOutSymbol = function (text) {
  var ss = [];
  text = text.replace(/:/g, ";");
  text = text.replace(/;;/g, ";");
  text = text.replace(/,/g, ";");
  text = text.replace(/、/g, ";");
  ss = text.split(';');
  return ss;
}
/* @param 去除数组重复项
 * @param arr 数组
 */
Vue.prototype.removeDuplication = function (arr) {
      var hash=[];
      for(var i=0;i<arr.length;i++){
        if(hash.indexOf(arr[i]==-1)){
          hash.push(arr[i]);
        }
      }
      return hash
}


/**
 * 根据数组内元素的长度分组,并将长度作为新数组返回
 * @ arry 输入的数组
 * @ arry1 新建的数组 
 */
Vue.prototype.getTreeNumLong = function(arry){
  var arry1=[];
  for(var j=0;j<arry.length;j++){
    arry1.push(arry[j].length);
  }
  arry1=[...new Set(arry1)];
  return arry1;
}
/**
 * 深克隆方法
 * @ obj 输入的对象
 * @ newobj 新建的对象 
 */
Vue.prototype.deepClone = function(obj){
  if(obj === null) return null;
  if(obj.constructor !== 'object') return obj;
  if(obj.constructor === Date) return new Date(obj);
  if(obj.constructor === RegExp) return new RegExp(obj);
  var newObj = new obj.constructor(); //保持继承的原型
  for(var key in obj){
      if(obj.hasOwnProperty(key)){
          var val = obj[key];
          newObj[key] = typeof val === 'object' ? arguments.callee(val):val;
      }
  }
  return newObj;
}
import { API } from '@/api/kwebApi.js'
var api = API.getApi('clkd', 'gb');
import { QueryModel } from "@/common/js/QueryModel";
const staticdata= {
  base:{
      baseInfo : [
        { name: "中国法律知识资源总库论文库_期刊", tablename: "CLKJTOTAL" },
        { name: "中国法律知识资源总库论文库_博士论文", tablename: "CLKBTOTAL" },
        { name: "中国法律知识资源总库论文库_硕士论文", tablename: "CLKMTOTAL" },
        { name: "中国法律知识资源总库论文库_报纸", tablename: "CLKNTOTAL" },
        { name: "中国法律知识资源总库论文库_会议", tablename: "CLKPTOTAL" },
        { name: "中国法律知识资源总库案例库", tablename: "CLKCTOTAL" },
        { name: "中国法律知识资源总库大陆法规库(篇)", tablename: "CLKLKLAST" }
      ],
      infoSearchBox1:[
        {searchOptions: [
        { name: "主题",  value: "subject" },
        { name: "关键词", value: "keyword" },
        { name: "摘要",  value: "abstarct" },
        { name: "作者", value: "author" },
        { name: "单位", value: "org" },
        { name: "全文",  value: "content" },
        ],},
      ],
      //关联项查询的字段名称
      queryField :{
        key:['keyWordQKGL','keyWordQKGL','keyWordQKGL','keyWordQKGL','keyWordQKGL','keyWordQK','keyWordQK'],
        org:['searchOrg','searchOrgSchool','searchOrgSchool','searchOrg','searchOrgAuthor','searchOrgSLFY','searchOrgPub'],
        judge:['author','author','author','','','FG',''],
        zcwer:['author','author','author','','','ZCY',''],
        lawer:['author','author','author','','','LS',''],
        laworg:['','','','','','SWS',''],
        dsr:['','','','','','DSR',''],
        author:['authorQK','authorQK','authorQK','authorQK','authorQK','',''],
      }
  },
  //查询语句的数据集
  /***
   * 根据下面的集合和方法生成queryModel,再返回到vue组件中使用,再此修改时只需要在对象中配置修改的参数即可
   */
  searchData:{
      demo:{//法律依据查询
        table:'CLKLKLAST',
        page:{pagIndex:1,pageSize:3},//有分页——没有分组
        group:null,//有分组——没有分页group:{name:'',max:'0',topcount:'0'}分组条件,最大显示数,查询条数限制
        order:{name:'pubDate',relation:'desc'},
        selectList:[
          { groupRelation:"and",
            groupValue:{name:'entryCode',value:['la201709150041Y023','la201709150041Y052','la201709150041Y065','la201709150041Y067','la201709150041Y347']}
          },
          { groupRelation:"and",
            groupValue:{name:'TMF',value:['Y']}
          },
        ]
      },
      // 相关案例(论文库)
      dataXGAL_J:{
        table:'CLKCTOTAL',
        page:{pagIndex:1,pageSize:10},//有分页——没有分组
        order:{name:'PTString',relation:'desc'},
        selectList:[
          { groupRelation:"and",
            groupValue:{name:'keyWordQK',value:[1]}
          },
        ]      
      },
      // 相关法规(论文库)
      dataXGFGgroup_J:{
        table:'CLKL',
        group:{name:'effcetGrade',max:'0',topcount:'0'},
        order:{name:'PTString',relation:'desc'},
        selectList:[
          { groupRelation:"and",
            groupValue:{name:'cnKeyWord',value:[1]}
          },
        ]      
      },
      //案例库的法律依据(案例库)
      dataFLYJ_C:{
        table:'CLKLKLAST',
        page:{pagIndex:1,pageSize:5},//有分页——没有分组
        order:{name:'pubDate',relation:'desc'},
        selectList:[
          { groupRelation:"and",
            groupValue:{name:'entryCode',value:[1]}
          },
          { groupRelation:"and",
          groupValue:{name:'TMF',value:[1]}
          },
        ]      
      },
      // 同法律法规的案例
      dataFLYJAL_C:{
        table:'CLKCTOTAL',
        page:{pagIndex:1,pageSize:5},//有分页——没有分组
        order:{name:'PTString',relation:'desc'},
        selectList:[
          { groupRelation:"and",
            groupValue:{name:'citationLaws',value:[1]}
          },
          { groupRelation:"and",
          groupValue:{name:'caseCode',value:[1]}
          },
          { groupRelation:"not",
          groupValue:{name:'citationLaws',value:[1]}
          },
          { groupRelation:"not",
          groupValue:{name:'FileName',value:[1]}
          },
        ]      
      },
      //相关案件
      dataXGAJ_C:{
        table:'CLKCTOTAL',
        page:{pagIndex:1,pageSize:5},//有分页——没有分组
        order:{name:'PTString',relation:'desc'},
        selectList:[
          { groupRelation:"and",
            groupValue:{name:'otherKeyword',value:[1]}
          },
          { groupRelation:"not",
          groupValue:{name:'caseCode',value:[1]}
          },
        ]      
      }, 
      //本案文书
      dataBAWS_C:{
        table:'CLKCTOTAL',
        page:{pagIndex:1,pageSize:5},//有分页——没有分组
        order:{name:'PTString',relation:'desc'},
        selectList:[
          { groupRelation:"and",
            groupValue:{name:'codeNumber',value:[1]}
          },
        ]      
      },   
  }
}

    /**
     * @param sql查询:IndexSearch
     * @param table 表名
     * @param selectList 查询条件数组:
     * groupValue:{name:''查询的字段
     * value:''查询匹配的值
     * relation:''查询的关系:and,or,not
     * }
     * groupRelation:{关系}
     * @param order 查询排序
     * {name:''查询的字段
     * relation:''查询的关系:asc/desc
     * }
     * table,pagIndex1,pageSize1,order,selectList
     */

const  buildQueryModel= function (DATA){
        var query =new QueryModel();
        query.tableRank(DATA.table);
        for(var i=0;i<DATA.selectList.length;i++){
          query.newSrchGroup(DATA.selectList[i].groupRelation);
          for(var j=0; j<DATA.selectList[i].groupValue.value.length; j++){
            query.newSrchItem(DATA.selectList[i].groupValue.name,DATA.selectList[i].groupValue.value[j],'or');
          }
        }
        if(DATA.order!=null){
          query.orderField(DATA.order.name,DATA.order.relation);   
        }
        if(DATA.group!=null){
          query.groupField(DATA.group.name,DATA.group.max,DATA.group.topcount);   
        }
        if(DATA.page!=null){
          var queryModel = {
            query: query.toJson(),
            pageIndex: DATA.page.pagIndex,
            pageSize: DATA.page.pageSize,
          };
        }
        else{
          var queryModel = {
            query: query.toJson(),
          };
        }
        return queryModel;
}


const  kbaseANDSql = function (list) {
  var arr=list;
  var str="";
  for (var j=0;j<arr.length-1;j++){
    var ss="";
    if(j==0){
      var ss="\'"+arr[j]+"\'"
    }
    else{
      var ss="\*\'"+arr[j]+"\'"
    }
    str+=ss;
  }
  return str; 
}
const  kbaseNOTSql = function (list) {
  var arr=list;
  var str="";
  for (var j=0;j<arr.length-1;j++){
    var ss="";
    if(j==0){
      var ss=arr[j]+"\'"
    }
    else if(j==arr.length-1){
      var ss="\+\'"+arr[j]
    }
    else{
      var ss="\+\'"+arr[j]+"\'"
    }
    str+=ss;
    alert(str)
  }
  return str; 
}


        /**
     * @param 截取文献导航子代码,并返回数组
     * @param str 要截取的字符串,若为‘521’时返回:“[5,52,521]”

     */
const getSonOfDH =function(str){
  var le=str.length;
  var str2="";
  var arr1=[];
  for (var j=0;j<le;j++){
    str2=str.substring(0,j+1);
    arr1.push(str2);
  }
  return arr1;
}
        /**
     * @param 截取文献导航子代码,并返回数组
     * @param str 要截取的字符串,若为‘521’时返回:“[5,52,521]”

     */
    const getNum =function(str){
      var le=str.length;
      var str2="";
      var arr1=[];
      for (var j=0;j<le;j++){
        str2=str.substring(0,j+1);
        arr1.push(str2);
      }
      return arr1;
    }
        /**
     * @param 获取专题字段数据
     * @param v 文本内容:queryModel查询的数组数据
     * @param i 判断数据类型,0-6:期刊;博士;硕士;报纸;会议;案例;法规(篇)
     * @param count 显示多少条数据
     */
const reGetData = function (v,i) {
      var arryData=[];
      function arryChange(param,i){
        var obj={};
        if(i==0){
          obj.type ='[J]';
          obj.month = param.month;
          obj.year = param.year+'年';
          obj.author = param.author;       
          obj.title = param.title;
          obj.org =  param.org;
          obj.source =param.source;
          obj.fileName = param.fileName;
          obj.sourceDB = param.sourceDB;     
        }
        if(i==1){
          obj.type ='[D]';   
          obj.year = param.year+'年';
          obj.author = param.author;  
          obj.title = param.title;
          obj.org =  param.org;
          obj.source =param.source;
          obj.fileName = param.fileName;
          obj.sourceDB = param.sourceDB; 
        }
        if(i==2){
          obj.type ='[M]';   
          obj.year = param.year+'年';
          obj.author = param.author;  
          obj.title = param.title;
          obj.org =  param.org;
          obj.source =param.source;
          obj.fileName = param.fileName;
          obj.sourceDB = param.sourceDB; 
        }
        if(i==3){
          obj.type ='[N]';  
          obj.author = param.author;   
          obj.month = param.month;
          obj.title = param.title;
          obj.org =  param.org;
          obj.source =param.source;
          obj.fileName = param.fileName;
          obj.sourceDB = param.sourceDB;
        }
        if(i==4){
          obj.type ='[P]';  
          obj.author = param.author; 
          obj.year = param.year+'年';  
          obj.title = param.title;
          obj.org =  param.org;
          obj.source =param.source;
          obj.fileName = param.fileName;
          obj.sourceDB = param.sourceDB;
        }
        if(i==5){
          obj.type ='[C]';  
          obj.author = param.org; 
          obj.year = param.refereeDate;
          obj.title = param.title;
          obj.org =  param.org;
          obj.source =param.source;
          obj.fileName = param.fileName;
          obj.sourceDB = param.sourceDB;
        }
        if(i==6){
          obj.type ='[L]'; 
          obj.author = param.org;
          obj.year = param.publishDate;  
          obj.title = param.title;
          obj.org =  param.org;
          obj.source =param.source;
          obj.fileName = param.fileName;
          obj.sourceDB = param.sourceDB;
        }
        if(i==7){
          obj.type ='[Z]'; 
          obj.author = param.org;
          obj.title = param.title;
          obj.year = param.publishDate;  
          obj.fileName = param.fileName;
          obj.sourceDB = param.sourceDB;
        }
        return obj;
      }
      for(var prop in v) {
        arryData.push(arryChange(v[prop],i));        
      } 
      return arryData; 
    }

    

  /**分页数据缓存设计
   * 到达功能:
   * 刷新页面,调用分页的数据,当页面执行过,则调用缓存内的数据并显示,当页面没有执行过,则生成json,并调用api,查询数据,并将数据放入缓存区保存。
   * 注意问题:
   * 因为调用共有组件,需要对具体哪个值设key,在执行时需要做判断,
   * 缓存设置,需要对缓存空间,缓存条数进行判断,更新变动(放到本地内),
   * 缓存数据针对当前用户,当前电脑,可看到的数据所以需要设置(放到本地内),
   * 
   * 现分页的缓存设计(把缓存的数据搁置在本页面内的内存内,调用共有方法,存储其中,刷新后数据置空)
   * 
   */
  const  pageShow= function (PAGE,DATA){
    var cache =DATA[PAGE];
    if(!cache){
      return 'false';
    }
    else {
      return cache;
    }
  }
  const  pageShowGroup= function (PAGE,DATA,NAME){
    var cache={};
    // cache[NAME]=PAGE[DATA];
    // alert(JSON.stringify(cache[NAME]))
    if(!cache[NAME]){
      return 'false';
    }
    else {
      return cache;
    }
  }
  //构建嵌套集合
  const  buildPageCache = function (NAME,DATA,PAGE){
    var goodlistArr = [];
    var item = new Object();
    item[NAME] = {};
    item[NAME].page=PAGE;
    item[NAME].data=DATA;
    goodlistArr.push(item);
    return item;
  }

  const  putNewElement =function (DATA,TYPE,VALUE){

  }

export  {
  staticdata,
  test,
  reGetData,
  madeQueryModel,
  madeQueryModelGroup,
  kbaseNOTSql,
  kbaseANDSql,
  buildQueryModel,
  getSonOfDH,
  getNum,
  pageShow,
  pageShowGroup,
  buildPageCache
}

  /**
   * 页面是否缓存判断,放在调用查询方法前面
   * thisDATA:缓存数据总集合
   * PAGE:分页组件返回的当前页值
   * NAME:定义的使用分页组件的该模块ID
   * 判断缓存thisDATA中是否含有名为NAME的PAGE当前页缓存
   * 存在则返回缓存区的数据
   * 不存在则返回空*/
  const  pageCacheShow= function (thisDATA,PAGE,NAME){
    var cache={};
    if(thisDATA[NAME]){
      cache=thisDATA[NAME];
      if(cache[PAGE]){
        return cache[PAGE];
      }
      else{
        return 'false';  
      }
    }
    else {
      return 'false';
    }
  }
  /** 构建嵌套集合
   * DATA:api获取到的数据
   * PAGE:当前页值
   * NAME:定义的使用分页组件的该模块ID
   * 放入查询出的数据后,把数据缓存,返回缓存集合
   * thisDATA:缓存已有的数据
  */
  const  buildPageCache = function (DATA,PAGE,NAME,thisDATA){
    var item = new Object(),map =new Object();
    if(thisDATA[NAME]){
      item[PAGE]=DATA;
      Object.assign(item,thisDATA[NAME]); //将两组集合对象融合在一起
    }
    else{
      item[PAGE]=DATA;
    }
    map[NAME]=item;
    Object.assign(thisDATA,map);
    return thisDATA;
  }






  //往数组内加入新的元素
  /***
   * 
   */
  const  putNewElement = function (DATA,ELEMENTVNAME,ELEMENTVALUE){
    var thisitem1 = new Object();
    thisitem1[ELEMENTVNAME]=ELEMENTVALUE;
    var thisarry=[];
    DATA.map(((items)=> {
      thisarry.push(Object.assign({},items,thisitem1))
      }))
      return thisarry;
  }




相关文章

  • js总结方法(待整理)

    过滤数组某元素 向一个对象数组里面添加新的属性var arry= [{a:11,b:22,c:33,d:44},{...

  • JS待整理

    平时看到一些好的点会整理记录,但是还没有连成一条线。等到积累够多,会试着连成一条线。让自己的知识脉络更清晰。 写完...

  • TODO

    说明 收藏一些技术社区和个人博客中大神的文章, 待整理学习吸收~ 内容 JS模块总结 Sea.js 写一个适应所有...

  • 深入学习 JavaScript —— 面向对象思想

    前言 这一篇比较简单,就总结整理下 JS 中实现面向对象设计思想,尤其是使用类实现的方法。我们都知道,JS 的语言...

  • JS中的逻辑运算符&&、||

    1、JS中的||符号: 运算方法: 总结:真前假后 2、JS中的&&符号: 运算方法: 总结:假前真后

  • js数组常用方法整理

    js数组常用方法整理 标签:js 数组 前言:这篇文章主要是一些归纳总结,大部分参考的是MDN的程序,也加了一些自...

  • js数组方法整理

    js数组方法整理 整理了以下数组方法 join() push()和pop() shift() 和 unshift(...

  • https://www.cnblogs.com/zyfeng/p

    js数组方法整理整理了以下数组方法 join() push()和pop() shift() 和 unshift()...

  • lyjutils.js javascript 工具类

    收集整理的常用js,部分方法依赖jquery

  • 知识收集随手记

    JS刷新当前页面的几种方法总结

网友评论

      本文标题:js总结方法(待整理)

      本文链接:https://www.haomeiwen.com/subject/gheqictx.html