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

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

原型链

  1. 0){
  2. for(let i=0;i

使用说明

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

柯里化

  1. 0){
  2. for(let i=0;i

使用说明

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

函数式编程

  1. class pushOnly{
  2. constructor(_val){
  3. this._val=_val
  4. }
  5.     //函子
  6.     map(data){
  7.         return new pushOnly(data)
  8.     }
  9.     val(){
  10.         return this._val
  11.     }
  12.     push(data){
  13.         const newArr = [...this._val];
  14.         // 传值赋值,防止修改系统变量
  15.         newArr.push(data);
  16.         return this.map(newArr)
  17.     }
  18.     Set(key){
  19.         const newArr = [];//新数组
  20.         if(key){
  21.             for(let i=0;i<this._val.length;i++){
  22.                 let flag = true;
  23.                 for(let j=0;j<newArr.length;j++){
  24.                     if(this._val[i][key] === newArr[j][key]){
  25.                         flag = false
  26.                     }
  27.                 }
  28.                 if(flag){
  29.                     newArr.push(this._val[i])
  30.                 }
  31.             }
  32.             return this.map(newArr)
  33.         }else {
  34.             return this.map([...new Set(this._val)])
  35.         }
  36.     }
  37. }
  38. //of方法
  39. pushOnly.of = function(_val) {
  40.     return new pushOnly(_val)
  41. };</code></pre>
  42. 使用说明

  43. pushOnly.of(arr).push(data).val()
  44. pushOnly.of(arr).push(data).Set(key).val()
  45. 回调函数

  46. 使用说明

  47. arr.push(data).set(key,callback)
  48. 状态模式

  49. 新需求说明

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

    • [1] 柯里化

猜你在找的JavaScript相关文章