首页 > 其他分享 >js数组去重

js数组去重

时间:2024-04-28 14:56:39浏览次数:10  
标签:obj1 arr obj2 const newArr js 数组 return

function isPrimitive(obj) {
  return obj === null || !['object', 'function'].includes(typeof obj)
}
function objEqual(obj1, obj2) {
  //console.log(isPrimitive(obj1) || isPrimitive(obj2))
  if (isPrimitive(obj1) || isPrimitive(obj2)) {
    return Object.is(obj1, obj2)
  }
  const obj1Entry = Object.entries(obj1);
  const obj2Entry = Object.entries(obj2);
  console.log(obj1Entry)
  if (obj1Entry.length !== obj2Entry.length) {
    return false
  }
  for (const [k1, v1] of obj1Entry) {
    if (!(k1 in obj2) || !objEqual(v1, obj2[k1])) {
      return false;
    }
  }
  return true
}

function uniqueArray(arr) {
  let newArr = []
  for (let i = 0; i < arr.length; i++) {
    const item = arr[i]
    let isFind = false
    for (let j = 0; j < newArr.length; j++) {
      const item1 = newArr[j]
      if (objEqual(item, item1)) {
        isFind = true
        break
      }
    }
    if (!isFind) {
      newArr.push(item)
    }
  }
  return newArr
}

const arr = [{ 'a': 1, 'b': 2 }, { 'a': 1, 'c': undefined }, { 'b': 2, 'a': 1 }, null, null, undefined, undefined, { 'aa': { 'bb': 1 } }, { 'aa': { 'bb': 1 } }]

console.log(uniqueArray(arr))

 

标签:obj1,arr,obj2,const,newArr,js,数组,return
From: https://www.cnblogs.com/howhy/p/18163718

相关文章

  • 一道神奇的面试题---无序数组排序后的最大相邻差
    一:概述这个算法的面试题目是:有一个无序整型数组,如何求出该数组排序后的任意两个相邻元素的最大差值?要求时间和空间复杂度尽可能低。  二:具体说明<1>第一种解法(初步解法)这个解法的大致思路:使用任意一种时间复杂度为O(nlogn)的排序算法(如快速......
  • js 接收form表单响应
    可直接运行的示例:<%@pagecontentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><title>test</title></head><formid="myForm"><labelfor=&quo......
  • vite+jsx
    "@vitejs/plugin-vue-jsx": "^3.1.0"vite配置importvueJsxfrom'@vitejs/plugin-vue-jsx'//添加这一句//https://vitejs.dev/config/exportdefaultdefineConfig({plugins:[vue(),vueJsx()//添加这一句]})"vite": "3.0......
  • js+canvas图片裁剪
    canvas裁剪图片功能实现选择图片文件,预览原图裁剪图片显示裁剪后的图片调整裁剪区域大小获取裁剪后的图片图片裁剪功能优化<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=dev......
  • js逆向实战之中国男子篮球职业联赛官方网站返回数据解密
    url:https://www.cbaleague.com/data/#/teamMain?teamId=29124分析过程看流量包,返回数据全是加密的字符串,要做的就是解密回显数据。由于这里的网址都比较特殊,里面都带有id号,所以通过url关键字去搜索不是一个很好的办法。看initiators,里面有很多异步传输。异步传输......
  • 一道编程题引发的C中关于数组、指针的思考
    7-163谷歌的招聘由一道编程题引发的C中关于数组、指针的思考先来看三种数组定义方式#include<stdio.h>#include<stdlib.h>intmain(){//方式1intarray_1[4]={1};//方式2,变长数组intn2;scanf("%d",&n2);intarray_2[n2];//使用变......
  • threejs 浏览器窗口resize变化 自适应 html 全屏
    全屏:画布全屏和body页面全屏;//导入threejsimport*asTHREEfrom"three";import{OrbitControls}from"three/examples/jsm/controls/OrbitControls.js";//创建场景sceneconstscene=newTHREE.Scene();//console.log(scene,'scene');//......
  • 二进制数组
    点击查看代码#读写二进制结构数组fromfunctoolsimportpartialfromstructimportStruct#Writedefwrite_records(records,format,f):"""Writeasequenceoftupletoabinaryfileofstructures"""record_struct=Struct(format)......
  • js设计模式(上)
     引用:(23条消息)《Javascript设计模式与开发实践》关于设计模式典型代码的整理(上):单例模式、策略模式、代理模式、迭代器模式、发布-订阅模式、命令模式、组合模式_QQsilhonette的博客-CSDN博客1、单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。使用闭包封装......
  • js调整div顺序
    js调整div顺序并保留div原有事件等<divclass="my_tabs"><divclass="el-tabs__nav-scroll"><divclass="el-tabs__nav"><divclass="el-tabs__itemis-active">AAAA</div><d......