functionunique(arr){let res =[]let len = arr.length
for(let i =0; i < len; i++){for(var j =0, resLen = res.length; j < resLen; j++){if(arr[i]=== res[j])break}if(j === resLen) res.push(arr[i])}return res
}
1.2 indexOf
functionunique(arr){let res =[]let len = arr.length
for(let i =0; i < len; i++){let curren = arr[i]if(res.indexOf(curren)===-1){
res.push(curren)}}return res
}
indexOf内部是===
1.3 排序后去重
functionunique(arr){let res =[]let sortedArr = arr.concat().sort()let len = sortedArr.length
let seen
for(let i =0; i < len; i++){if(!i || seen !== sortedArr[i]){
res.push(sortedArr[i])}
seen = sortedArr[i]}return res
}
1.4 unique API
functionunique(arr, isSorted, iteratee){let res =[]let len = arr.length
let seen =[]for(let i =0; i < len; i++){let value = arr[i]let computed = iteratee ?iteratee(value, i, arr): value
if(isSorted){if(!i || seen !== computed){
res.push(value)}
seen = computed
}elseif(iteratee){if(seen.indexOf(computed)===-1){
seen.push(computed)
res.push(value)}}elseif(res.indexOf(value)===-1){
res.push(value)}}return res
}
console.log(unique([1,13,'4',2,'4',12,13,9],false,(item)=>{returntypeof item ==='string'? item.toLowerCase(): item
}))