废话莫多说,急忙把码农。
// 初始化 a,b 两数组,并赋值
let a = Array.from(new Array(100000), (x, index)=>{ return index})
let b = Array.from(new Array(50000), (x, index)=>{ return index+index})
// 获取当前时间(用于计算数组去重所用时长/ms)
let start = new Date().getTime()
console.log('begin:')
// 此处存放数组去重方法
function distinct(a, b) {
}
console.log('no repeat length:', distinct(a, b).length)
// 结束时时长
let end = new Date().getTime()
console.log('耗时', end - start)
一、Array.filter() + indexOf
function distinct(a, b) {
let arr = a.concat(b);
return arr.filter((item, index)=> {
return arr.indexOf(item) === index
})
}
二、Array.sort()(优)
function distinct(a, b) {
let arr = a.concat(b)
arr = arr.sort()
let result = [arr[0]]
for (let i=1, len=arr.length; i<len; i++) {
arr[i] !== arr[i-1] && result.push(arr[i])
}
return result
}
三、ES6 set()( 极简 + 优)
function distinct(a, b) { return Array.from(new Set([...a, ...b])) }
四、for … of … + obj(优S)
function distinct(a, b) {
let arr = a.concat(b)
let result = []
let obj = {}
for (let i of arr) {
if (!obj[i]) {
result.push(i)
obj[i] = 1
}
}
return result
}
-
Result:
15W
150w
1500W
我以为它是王者,它却对我说它是荣耀。
-
结果集
data sort set for of + obj 15w 136 81 53 150w 546 1002 314 1500w 4205 14508 2411 最强王者 √
问君,可有更快法?