js数组去重,对象属性相同也去除

本文介绍了如何在JavaScript中编写一个名为uniqueArray的函数,用于从数组中去除重复元素,以及辅助函数equals用于判断两个值是否相等,特别关注了对原始类型和对象的处理。
摘要由CSDN通过智能技术生成
function uniqueArray(arr) {
    const result = []
    for (const item of arr) {
      let isFind = false
      for (const exitItem of result) {
        if (equals(item, exitItem)) {
          isFind = true
          break
        }
      }
      if (!isFind) {
        result.push(item)
      }
    }
    return result
  }
  // 辅助函数,判断两个值是否相等
  function equals(val1, val2) {
    // 原始类型直接用Object.is判断
    if (isPrimitive(val1) || isPrimitive(val2)) {
      return Object.is(val1, val2)
    }
    const entires1 = Object.entries(val1)
    const entires2 = Object.entries(val2)
    if (entires1.length !== entires2.length) {
      return false
    }
    for (const [key, value] of entires1) {
      if (!equals(value, val2[key])) {
        return false
      }
    }
    return true
  }
  // 辅助函数,判断是否为原始类型
  function isPrimitive(value) {
    return value === null || (typeof value !== 'object') && (typeof value !== 'function')
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值