数组对象如何去重,把获取的数据 去重。

问题

数组对象如何去重,把获取的数据 去重,for循环的时候不去重 根据idnex 会报错

问题相关代码截图

img

img

将数组中每个对象转换为json字符串,相同对象转化为的json字符串是相同的,根据这个思路去重

/**
 * 数组对象去重
 * @param {Array} arr
 */
function uniqueArrObj (arr) {
    let res = []
    for (let i = 0, len = arr.length; i < len; i++) {
        let item = JSON.stringify(arr[i])
        if (!res.includes(item)) res.push(item)
     }
     res = res.map(item => JSON.parse(item))
     return res
}

const arr = [
  { a: 'hello', b: { name: '王五' } },
  { a: 'hello', b: { name: '李四'} },
  { a: 'world', b: { name: '李四'} },
  { a: 'hello', b: { name: '王五'} }
]

console.log(uniqueArrObj(arr))

运行结果

img