来自刘:
接管两个参数,要去重数组和新数组
// 去重
function distincts(arr, newarr) {for (let i = 0; i < arr.length; i++) {if (newarr.indexOf(arr[i]) === -1) {newarr.push(arr[i])
console.log(newarr)
}
}
return newarr
}
console.log(distincts(['s', 'u', 'c', 'e', 's', 's'], []))
来自龙:
转自:https://juejin.cn/post/706373…
// 用 Set 去重。一个简略的形式, 然而又与太简略已被在面试中禁用
function my_sort1(arr) {return [...new Set(arr)]
}
// 用 indexOf 去重。应用 api(这里 indexOf 就是 api)的去重形式
function my_sort2(arr) {let newArr = []
for (let val of arr) {if (newArr.indexOf(val) === -1) {newArr.push(val)
}
}
return newArr
}
// 用 Map 去重。尽量不应用 api 的办法
function my_sort3(arr) {
// 创立一个映射实例
let map = new Map()
for (let i = 0, len = arr.length; i < len; i++) {
// 若该映射实例中没改映射则增加该映射
if (!map[arr[i]]) {map.set(arr[i], true)
}
}
// 将映射中的 key 取出创立一个新数组返回
return [...map.keys()]
}
console.log(my_sort3(['s', '','', null, null, undefined, undefined,
function test() {},
function test() {}, 'u', 'c', 'c', 'e',
's', 's'
]))//['s', '', null, undefined, ƒ, ƒ,'u','c','e']。这里不知为啥无奈去重函数