编辑代码

const _ = {
    //Array
    chunk: (array, size = 1) => {
        let ret = []
        let temp = []
        let index = 0
        for (i of array) {
            if (temp.length == size) {
                ret.push(temp)
                temp = []
            }
            temp.push(i)
        }
        if (temp.length != 0) {
            ret.push(temp)
        }
        return ret
    },
    compat: array => {
        let ret = []
        for (i of array) {
            if (i) {
                ret.push(i)
            }
        }
        return ret
    },
    concat:(array,...values)=>{
        for(i of values){
            array=array.concat(i)
        }
        return array
    },
    diffrence:(array,...values)=>{
        values=_.concat(values[0],...(values.slice(1)))
        let ret=[]
        for(i of array){
            if(!values.includes(i)){
                ret.push(i)
            }
        }
        return ret
    },
    drop:(array,n=1)=>{
        for(let i=0;i<n;i++){
            array.shift()
        }
        return array
    },
    dropRight:(array,n=1)=>{
        for(let i=0;i<n;i++){
            array.pop()
        }
        return array
    },
    dropRightWhile:(array,perdicate=(x,...any)=>x)=>{
        while(perdicate(array[array.length-1])){
            array.pop()
        }
        return array
    },
    dropWhile:(array,perdicate=(x,...any)=>x)=>{
        while(perdicate(array[0])){
            array.shift()
        }
        return array
    },
    fill:(array, value, start=0, end=array.length)=>{
        for(let i=start;i<end;i++){
            array[i]=value
        }
        return array
    },
    findIndex:(array, predicate=((x,...any)=>x), fromIndex=0)=>{
        for(let i=fromIndex;i<array.length;i++){
            if(predicate(array[i])){
                return i
            }
        }
        return -1
    },
    findLastIndex:(array, predicate=((x,...any)=>x), fromIndex=array.length-1)=>{
        for(let i=fromIndex;i>=0;i--){
            if(predicate(array[i])){
                return i
            }
        }
        return -1
    },
    first:array=>array[0],
    head:this.first,
    flattern:array=>[].concat(...array),
    flatternDeep:array=>{
        while(array.some(x=>Array.isArray(x))){
            array=[].concat(...array)
        }
        return array
    },
    flatternDepth:(array,depth=1)=>{
        for(let i=0;i<depth;i++){
            array=[].concat(...array)
        }
        return array
    },
    fromPairs:pairs=>{
        let ret={}
        for(i of pairs){
            ret[i[0]]=i[1]
        }
        return ret
    },
    indexOf:(array, value, fromIndex=0)=>{
        for(let i=(array.length+fromIndex)%array.length;i<array.length;i++){
            if(array[i]===value||
                (typeof array[i]==="number"&&typeof value==="number"&&
                array[i]!=array[i]&&value!=value)){
                return i
            }
        }
        return -1
    },
    intersection:(...arrays)=>{
        let ret=[]
        let f=true
        for(i of arrays[0]){
            f=true
            for(j of arrays.slice(1)){
                if(!j.includes(i)){
                    f=false
                    break
                }
            }
            if(f){
                ret.push(i)
            }
        }
        return ret
    },
    initial:array=>{
        array.pop()
        return array
    }
}
console.log(_.initial([1,2,3,4,5,6,7,8,9]))