javascript pushOnly( ) 数组添加非重复元素(或删除重复的元素)

前端之家收集整理的这篇文章主要介绍了javascript pushOnly( ) 数组添加非重复元素(或删除重复的元素)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原型链

0){
            for(let i=0;i

使用说明

arr.pushOnly(data,bool)
删除,默认为false,非必填 摘自

柯里化

0){
                    for(let i=0;i

使用说明

arr.pushOnly(data)(key)(bool)

函数式编程

    class pushOnly{
        constructor(_val){
            this._val=_val
        }
    //函子
    map(data){
        return new pushOnly(data)
    }

    val(){
        return this._val
    }

    push(data){
        const newArr = [...this._val];
        // 传值赋值,防止修改系统变量
        newArr.push(data);
        return this.map(newArr)
    }

    Set(key){
        const newArr = [];//新数组
        if(key){
            for(let i=0;i<this._val.length;i++){
                let flag = true;
                for(let j=0;j<newArr.length;j++){
                    if(this._val[i][key] === newArr[j][key]){
                        flag = false
                    }
                }
                if(flag){
                    newArr.push(this._val[i])
                }
            }
            return this.map(newArr)
        }else {
            return this.map([...new Set(this._val)])
        }
    }
}
//of方法
pushOnly.of = function(_val) {
    return new pushOnly(_val)
};</code></pre>

使用说明

pushOnly.of(arr).push(data).val()
pushOnly.of(arr).push(data).Set(key).val()

回调函数

使用说明

arr.push(data).set(key,callback)

状态模式

新需求说明

一次添加多个对象,只接收原数组中不存在的对象,存在的对象无法添加

参考

  • [1] 柯里化
原文链接:https://www.f2er.com/js/415514.html

猜你在找的JavaScript相关文章