const arr = [
{ a: 1, b: 2 },
{ b: 2, a: 1 },
{ a: 1, b: 2, c: { a: 1, b: 2 } },
{ b: 2, a: 1, c: { b: 2, a: 1 } },
]
const isObject = val => {
return typeof val === 'object' && val !== null
}
const newArr = [...arr]
for (let i = 0; i < newArr.length; i++) {
for (let j = i + 1; j < newArr.length; j++) {
if (equals(newArr[i], newArr[j])) {
newArr.splice(j, 1)
j--
}
}
}
function equals(val1, val2) {
if (!isObject(val1) || !isObject(val2)) return Object.is(val1, val2)
if (val1 === val2) return true
const val1Keys = Object.keys(val1)
const val2Keys = Object.keys(val2)
if (val1Keys.length !== val2Keys.length) return false
for (const key of val1Keys) {
if (!val2Keys.includes(key)) {
return false
}
const res = equals(val1[key], val2[key])
if (!res) return false
}
return true
}
console.log(newArr)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!