原型链
0){
for(let i=0;ietownPropertyDescriptor(this[i],key).value===Object.getownPropertyDescriptor(data,key).value){
bool&&this.splice(i,1);
return this;
}
}
this.push(data);
return this;
}else {
if(this.length===0||this.indexOf(data)===-1){
this.push(data);
return this;
}else {
bool&&this.splice(this.indexOf(data),1);
}
}
}
使用说明
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.jb51.cc/js/415514.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。