js object 去重

2024-01-10 05:50:37

?测试:数据

?let arr = [

? ? ? ? ? ? ? ? { a: 1, b: 2 },

? ? ? ? ? ? ? ? { b: 3, a: 4 },

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? b: 2, a: 1

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ]

结果

function unique(arr) {

? ? ? ? ? ? const newArr = [...arr]

? ? ? ? ? ? for (let i = 0; i < newArr.length; i++) {

? ? ? ? ? ? ? ? for (let j = i + 1; j < newArr.length; j++) {

? ? ? ? ? ? ? ? ? ? if (this.duibi(newArr[i], newArr[j])) {

? ? ? ? ? ? ? ? ? ? ? ? newArr.splice(j, 1);

? ? ? ? ? ? ? ? ? ? ? ? j--;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? return newArr;

? ? ? ? ? ? // return Array.from(new Set(arr));

? ? ? ? }



? ? ? ? function duibi(val1, val2) {

? ? ? ? ? ? if (isObject(val1) && isObject(val2)) {

? ? ? ? ? ? ? ? if (val1.length != val2.length) {

? ? ? ? ? ? ? ? ? ? return false;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? let key1 = Object.keys(val1);

? ? ? ? ? ? ? ? let key2 = Object.keys(val2);



? ? ? ? ? ? ? ? for (let k1 of key1) {



? ? ? ? ? ? ? ? ? ? if (!key2.includes(k1)) {

? ? ? ? ? ? ? ? ? ? ? ? return false;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? if (!duibi(val1[k1], val2[k1])) {

? ? ? ? ? ? ? ? ? ? ? ? return false;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? return true;

? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? return val1 == val2

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? //是否为集合

? ? ? ? function isObject(obj) {

? ? ? ? ? ? return obj !== null && typeof obj === 'object';

? ? ? ? }

文章来源:https://blog.csdn.net/qq_42074075/article/details/135400640
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。