zoukankan      html  css  js  c++  java
  • 获取数组中重复的元素

    第一种,判断包含基本类型的数组中的重复元素

    /**
     * (这里只是判断基本类型的元素)
     * @param  Array
     * @return Array
     */
    export const getRepeatElement = (array) => {
      let result = []
      let hash = {}
      array.forEach((item) => {
        if (item) {
          if (!hash[item]) {
            hash[item] = true
          } else {
            result.push(item)
          }
        }
      })
    
      result = result.filter((item, index, arr) => arr.indexOf(item) === index)
    
      return result
    }

    第二种,判断包含对象的数组中的重复元素

    /* 去掉对象数组中属性和属性值一样的对象,返回过滤后的数组 */
    const getNoRepeatObject = (array) => {
      if (array.length < 2) {
        return array
      }
      let differentObject = []  //放不重复的对象
      let sameObject = [] //放重复对象
      array.forEach(obj => {
        let sameArray = differentObject.filter(tempObj => {
          let isSame = true
          if(Object.keys(tempObj).length === Object.keys(obj).length) {
            for (const key in tempObj) {
              if (!obj.hasOwnProperty(key) || tempObj[key] !== obj[key]) {
                isSame = false
              }
            }
          } else {
            isSame = false
          }
          if (isSame) {
            return tempObj
          }
        })
        if (!sameArray.length) {
          differentObject.push(obj)
        } else {
          sameObject.concat(sameArray)  //将重复的对象放到sameObject数组中,如果需要,也可以返回
        }
      })
      if (differentObject.length === 1) {
        differentObject = []
      }
    
      return differentObject
    }
  • 相关阅读:
    TCP协议中粘包现象
    python 中socket模块及用法
    网络编程之五层协议
    面向对象的反射和双下方法(魔术方法)
    Centos下的redis安装和使用
    面向对象简介
    supervisor进程管理工具
    redis的持久化
    redis的主从同步及哨兵的用法
    ubuntu修改grub默认启动项
  • 原文地址:https://www.cnblogs.com/yyh1/p/9822257.html
Copyright © 2011-2022 走看看