array remove duplicated

Array interview

讲url参数解析为JS对象

//传统方式,分析search
function queryToObj(){
    const res ={}
    const search =location.search.substr(1)//去掉前面的?
    search.split('&').forEach(paraStr=>{
        const arr = paraStr.split('=')
        const key = arr[0]
        const val = arr[1]
        res[key] = val
    })
    return res
}

手写flatern考虑多层级

flat([[1,2],3,[4,5,[6,7,[8,9,[10,11]]]]])
//[1,2,3,4,5,6,7,8,9,10,11]

flat.js

function flat(arr){
//验证arr中还有没有深层数组
    const isDeep=arr.some(item=>item instance of Array)
    if(!isDeep){
        return arr//已经是flatern
    }
    const res =Array.prototype.concat.applay([],arr)
    return flat(res)//递归

}
const res =flat([1,2,[3,4],5])
console.log(res)

数组去重

传统方式:遍历元素挨个比较,去重
unique.js

function unique(arr){
    const res =[]
    arr.forEach(item=>{
        if(res.indexOf(item)<0){
            res.push(item)
        }

    })
    return res
}
const res =unique([30,20,10,20,30])
console.log(res)

使用set
funtion unique(arr){
const set = new Set(arr)
return […set]

}
const res =unique([30,20,10,20,30])
console.log(res)