原型链
0){
for(let i=0;i
使用说明
arr.pushOnly(data,bool)
柯里化
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)
状态模式
新需求说明
一次添加多个对象,只接收原数组中不存在的对象,存在的对象无法添加
参考
原文链接:https://www.f2er.com/js/415514.html