JavaScript Array、Object、数组、对象等数据转换及处理总结(二)

数组对象去重

数组对象去重,在从读取数据的时候,由于用户不断地新增数据,会导致依据 pageNo 获取回来的数据不准确出现重复,这时候就要用到数据对象去重,个人觉得最常用最好用的肯定是对象变量去重法

对象变量去重法

function deWeight(data, primaryKey) {
  let obj = {}
  data.forEach(item => {
    obj[item[primaryKey]] = item[primaryKey]
  })
  return Object.values(obj)
}
复制代码

深拷贝

深拷贝如果你足够的自信不犯错,那就直接用懒狗JSON格式化来深拷贝

JSON 格式化深拷贝

function deepClone(data) {
  return JSON.parse(JSON.stringify(data))
}
复制代码

递归深拷贝

function deepClone(obj) {
  if (typeof obj !== 'object' || obj === null) {
    return data
  }
  // 初始化返回结果
  let result = obj instanceof Array ? [] : {}
  // 遍历判断
  for (let key in obj) {
      // 保证 key 不是原型的属性
      if (obj.hasOwnProperty(key)) {
          // 递归
          result[key] = deepClone(obj[key])
      }
  }
  return result;
}
复制代码

数组对象排序

有时候业务逻辑过多的话还是把升降序封装一下比较好

升序

function ascendingSort(data, key) {
  return data.sort((a, b) => (a[key] - b[key]))
}
复制代码

降序

function descendingSort(data, key) {
  return data.sort((a, b) => (b[key] - a[key]))
}
复制代码

数组对象求和

reduce

封装reduce,理由如上

function arraySum(data, key) {
  return data.reduce((prev, item) => prev + item[key], 0)
}
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享