有一个对象里面有个数组,然后数组中还有一个个对象,一个个对象内还有数组,对象内还有对象,可以算是一个比较复杂的结构
现在的问题是 当我打印console.log(getData(obj.data))
的时候, 它还是原来的数据,已经蒙了
而且getRepeatData
方法深层次查询也不完善
chatgpt不会做这个,不要搜chatgpt了,找个diao大的帮忙解决下,感谢
let keys_data = {} // 定义数据第一次出现列表
// --------------------------------------------------------------------------------------
// 判断对象下data中是否有重复的元素,此方法为递归
const getData = arr => {
for (let i = 0; i < arr.length; i++) {
getRepeatData(arr[i])
// 循环里面的子项
for (const key in arr[i]) {
if (Array.isArray(arr[i][key])) {
getData(arr[i][key])
} else if (typeof arr[i][key] === 'object') {
getRepeatData(arr[i][key])
}
}
}
return arr
}
// 对象重复判断方法
// 思路: 每一项先存储,然后用存储的判断为存储的item,key以及value是否全等,如果全等,那么就gg
const getRepeatData = obj => {
for (const key in obj) {
if (Object.hasOwnProperty.call(obj, key)) {
const item = obj[key]
if (Array.isArray(item)) {
getData(item)
}
if (keys_data[item] === undefined) {
keys_data[key] = item
}
}
}
obj = keys_data
newData = obj
return obj
}
console.log(getData(obj.data))
console.log(keys_data)