JS复杂数组去重(有对象元素之类的)
-
双重for循环+数组的splice方法
function distinct(arr) { console.log('双重for循环') for (let i = 0, len = arr.length; i < len - 1; i++) { for (let j = i + 1; j < len; j++) { if (arr[i].stuId === arr[j].stuId) { arr.splice(j, 1) // splic数组会改变数组长度,所以要将数组长度len和下标j减一 j-- len-- } } } console.log(arr) return arr }
-
for of 配合 obj
function distinct(arr) { const result = [] const obj = {} // 标识是否存在相同的唯一标识 for (item of arr) { if (!obj[item.stuId]) { result.push(item) obj[item.stuId] = true } } console.log(result) return result }
-
方法三:数组reduce方法+obj
function distinct(arr) { const obj = {} const result = arr.reduce((pre, cur) => { if (!obj[cur.stuId]) { obj[cur.stuId] = true return [...pre, cur] } return pre }, []) console.log(result) return result }