美文网首页
js 数组去重,格式转换方法

js 数组去重,格式转换方法

作者: symY_Y | 来源:发表于2021-08-09 17:48 被阅读0次

1,对象数组去重

/**
 * 对象数组去重
 * arr 数组
 * prop   属性键值:name   根据name去重
 */
const ARR_DISTINCT_BY_PROP = function(arr, prop) {
  const obj = {}
  return arr.reduce(function(preValue, item) {
    if (!obj[item[prop]]) {
      obj[item[prop]] = true && preValue.push(item)
    }
    return preValue
  }, [])
}

2,用js实现将二维数组格式化转换成树状数组

/** 用js实现将二维数组格式化转换成树状数组
 * arr = [
["a", "aa", "aaa", "aaaa"],
["b", "bb", "bbb"],]
 */
export const makeData = function(arr) {
  const obj = {}
  const res = []
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
      const item = arr[i][j]
      const key =
        item.name + '-' + item.parentName + '-' + item.firstName + '-' + j
      if (!obj[key]) {
        obj[key] = {
          name: item.name,
          value: item.value,
          firstName: item.firstName,
          parentName: item.parentName,
          formatter: item.formatter,
          number: j,
          children: []
        }
      }
      if (j > 0) {
        const length =
          arr[i][j - 1].name +
          '-' +
          arr[i][j - 1].parentName +
          '-' +
          arr[i][j - 1].firstName +
          '-' +
          (j - 1)
        const parent = obj[length]
        if (parent) {
          if (parent.children.indexOf(obj[key]) < 0) {
            parent.children.push(obj[key])
          }
        }
      } else if (res.indexOf(obj[key]) < 0) {
        res.push(obj[key])
      }
    }
  }
  return res
}

3,将树结构数据转换为一维数组

// 将树结构数据转换为一维数组
export const flatTree = function(arr, result = []) {
  arr.map((item, key) => {
    if (item.number > 0) {
      result.push({
        source: item.parentName,
        target: item.name,
        value: item.value,
        formatter: item.formatter,
        number: item.number
      })
    }
    if (item.children && item.children.length > 0) {
      flatTree(item.children, result)
    }
  })
  return result
}

4, 数组去重

    //  数组去重
    unique(array) {
      const r = []
      for (let i = 0, l = array.length; i < l; i++) {
        for (let j = i + 1; j < l; j++)
          if (array[i] === array[j]) {
            j = ++i
          }
        r.push(array[i])
      }
      return r
    }

相关文章

  • js 数组去重,格式转换方法

    1,对象数组去重 2,用js实现将二维数组格式化转换成树状数组 3,将树结构数据转换为一维数组 4, 数组去重

  • 数组去重4种方法

    怎么把类数组转换为数组? 数组去重4几种方法:

  • js 数组去重方法

    1、借助ES6[https://so.csdn.net/so/search?q=ES6&spm=1001.2101...

  • js中数组对象去重的方法

    采用数组中的reduce方法,遍历数组,也是通过对象访问属性的方法 参考js中数组对象去重的方法

  • 前端开发备忘录

    js 数组去重的方法 最常用的方式 对象键值法去重 es6 Set方法一键去重 js常见的循环与遍历以及不同循...

  • js 数组格式转换

    实际需求中总是遇到,后端给的一维数组需要转成一定的格式才能在业务中去使用或操作,下面是我常遇到的几种转化: 1、一...

  • JS数组去重常见方法分析

    数组去重是开发中经常会遇到的问题,也是面试时经常会考到的。JS实现数组去重可以有多种方法: 一、简单的去重方法 用...

  • 5.18 总结

    1 数组去重 js数组去重的常用方法总结 2 定时器的返回值是定时器的编号 定时器的执行;(全部js代码执...

  • 数组的去重和数组中对象的去重

    数组中对象去重 方式1 jq方式 方式2 原生js方式 普通数组的去重 方式1 普通的数组去重js 方式2 Se...

  • 数组常用方法

    数组常用方法 一、js数组常用方法: 1、join() Array.join() 方法将数组中所有元素都转换成字...

网友评论

      本文标题:js 数组去重,格式转换方法

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