首页 > 其他分享 >方法随笔

方法随笔

时间:2022-11-09 10:36:13浏览次数:27  
标签:return param item let 数组 Array 随笔 方法

//数组去重,挑选出非重复项
export function chooseNonRepeatingData(ar1, ar2) {
  const _arr1 = ar1.filter(item1 => !ar2.includes(item1));
  const _arr2 = ar2.filter(item2 => !ar1.includes(item2));

  return [
    ..._arr1,
    ..._arr2
  ]
}

/**
   * @method 对象数组去重
   * @param  {Array} ary  需要去重的数组  
   * @param  {Any} dataTemplateId  去重的参考值  
   * @return {Array} tableData  去重后的数组
  */
export function delRepeatData(ary) {
  let obj = {};
  let tableData = [];
  tableData = ary.reduce((cur, next) => {
    obj[next.dataTemplateId] ? "" : obj[next.dataTemplateId] = true && cur.push(next);
    return cur;
  }, [])
  return tableData;
}


/**
 * @method 数组去重
 * @param  {Array} arr 需要去重的数组
 * @return {Array} 去除后的数组
 */

export function removeDuplicate(arr) {
  const newArr = []
  arr.forEach((item) => {
    if (newArr.indexOf(item) === -1) {
      newArr.push(item)
    }
  })
  return newArr
}


/**
 * @method 两个数组去重【单个数字】 arr1:[1,2,3]  arr2:[1,2,3,4]
 * @param  {Array} arr1 原始权限数组
 * @param  {Array} arr2 选择过的权限数组
 * @return {String} 去重后的字符串
 */

export function unique(arr1, arr2) {
  if (!Array.isArray(arr1) || !Array.isArray(arr2)) {
    console.error('type error!')
    return
  }
  let keys = [...arr1, ...arr2]
  let array = []
  for (let i = 0; i < keys.length; i++) {
    if (array.indexOf(keys[i]) === -1) {
      array.push(keys[i])
    }
  }
  return array.join(',')
}


/**
 * @method 深拷贝
 * @param  {Any} source
 * @return {Array} 深拷贝后的数组
 */
export function deepClone(source) {
  const sourceCopy = source instanceof Array ? [] : {}
  for (let item in source) {
    sourceCopy[item] =
      typeof source[item] === 'object' && source[item]
        ? deepClone(source[item])
        : source[item]
  }
  return sourceCopy
}


/**
 * @method 去除树形结构最后一层权限
 * @param  {Array} data 原始权限数组
 * @return {Array} 去除按钮权限的数组
 */

export function filterData(data) {
  // 到叶子节点了,返回,递归出口
  if (data == undefined || data == null || data.length == 0) {
    return
  } else {
    // 对每一层,遍历这个数组,调用filterData方法对每个元素下的数组进行同样的操作
    // 筛掉当前层的status为2的对象
    myFilter(data)
    for (let index in data) {
      filterData(data[index].menuChildren)
    }
  }
  return data
}


/**
 * @method 判断两个数组中是否有重复的数据
 * @param  {String} defaultData 默认选中的数据
 * @param  {String} distributData 可分配选中的数据
 * @return {Boolean} true 有重复的, false 没有重复的
 */
export function getSame(defaultData, distributData) {
  let ary1 = defaultData.split(',')
  let ary2 = distributData.split(',')
  let resultArr = []
  for (let i = 0; i < ary1.length; i++) {
    for (let j = 0; j < ary2.length; j++) {
      if (ary1[i] === ary2[j]) {
        resultArr.push(ary1[i])
      }
    }
  }
  for (let i = 0; i < resultArr.length; i++) {
    if (
      resultArr[i] == ' ' ||
      resultArr[i] == null ||
      typeof resultArr[i] == 'undefined'
    ) {
      array.splice(i, 1)
      i = i - 1
      return resultArr.length < 1 ? false : true
    }
  }
}

标签:return,param,item,let,数组,Array,随笔,方法
From: https://www.cnblogs.com/0520euv/p/16872707.html

相关文章

  • java中常用的String方法
    1length()字符串的长度Stringa="HelloWord!";System.out.println(a.length);输出的结果是字符串长度10。2charAt()截取一个字符Stringa="HelloWord";System.out.......
  • ncl中 使用mask 但最后mask全是缺测解决方法
    ;当我在使用mask提取我所需要的区域时,发现提取出来的全是缺测值;我的主要问题出现在:;var的变量,维度属性为timelonlat;当我调整维度为:timelatlon便解决问题printVars......
  • 中小企业数字化转型的方法有哪些?
    中小企业数字化转型从方法论来讲,应该在理解什么是数字化转型准备充足后应该遵循下列步骤逐步开展,并且必须明白:“不可能有完全相同的两家企业,更别说企业的发展走向,照抄照搬......
  • string常用方法
    string的值是不可变的,因为底层用的是final修饰的一个char数组字符串的定义Stringstr1="hello";Stringstr2=newString("hello");string(bytes):byte[]bytes={97,9......
  • Linux操作系统随笔2
    发现问题,查找原因,解决并记录。这是很好的——GaryCurp_2022.11.8今天还是继续搭建环境,教材到CentOS7导入hadoop包时候注释给出了两种不认识的导入方法,所以想要了解一下,然......
  • Linux操作系统随笔
    感觉更喜欢dos——GaryCurp_202.11.7环境:CentOS7X64设置默认进入命令行界面(前提是安装了GUI界面,不然也只有dos界面)#systemctlset-defaultmulti-user.target //默......
  • 道路交通:汽车剐蹭处理方法
    一、轻微剐蹭,对方全责1、勿关汽车,否则行车记录仪可能会突然失忆(待测试),下车前开手机录音;2、待安全后下车拍照,需包括对方人、双方车牌、碰撞位置左右各一;3、轻微事故且定......
  • 计算机基础随笔
    网线不间断电源虚拟内存内核态用户态硬盘分类与硬盘接口1.接网线顺序橙白橙绿白蓝蓝白绿棕白棕2.不间断电源不间断电源ups配上备用的柴油发电机实......
  • Servlet的生命周期; Java IO流处理 ; python有点意思; matlab; 为什么要使用构造方法?JavaB
    Servlet的生命周期Servlet的生命周期主要有三个方法:init()初始化阶段service()处理客户端请求阶段destroy()终止阶段pagehelper怎么使用的​​https://pagehelper.github.......
  • 魔法方法、元类、设计模式
    目录魔法方法、元类、设计模式面向对象的魔法方法基于魔法方法的笔试题元类简介创建类的两种方式元类定制类的产生行为元类定制对象的产生行为魔法方法之双下new方法设计模......