从javascript数组中删除元素的干净方法(使用jQuery、coffeescript)

关于这一点,有很多问题,尤其是:
array的jQuery版本包含一个包含拼接方法的解决方案以及更多内容。然而,它们看起来都很复杂和烦人

结合javascript、jQuery和coffeescript的强大功能,从javascript数组中删除元素的最干净方法是什么?我们事先不知道指数。代码:

a=[4,8,2,3]
a、 移除(8)#a现在是[4,2,3]

如果没有一个好的内置方法,那么扩展javascript数组以支持这种方法的干净方法是什么?如果有帮助的话,我真的使用数组作为集合。理想情况下,解决方案将在带有jQuery支持的coffeescript中很好地工作。此外,我不能不关心速度,而是优先考虑清晰、简单的代码

咖啡脚本:

数组::删除=(e)-&[email protected][t..t]=[]如果([email protected](e))&gt-1.

它只是将元素拼接到位置t,即找到e的索引处(如果实际找到t>-1)。Coffeescript将此转换为:

Array.prototype.remove=函数(e){
变量t,_ref;
如果((t=this.indexOf(e))>-1){
返回([].splice.apply(this[t,t-t+1].concat(\u ref=[]),\u ref);
}
};

如果要删除所有匹配元素,并使用CoffeeScript和jQuery返回新数组:

数组::删除=(v)->$。[email protected],(e)——>e=五、

也就是说:

Array.prototype.remove=函数(v){
return$.grep(此函数为e){
返回e!==v;
});
};

或者在没有jQuery的grep的情况下执行相同的操作:

数组::filterOutValue=(v)->;当x时,x代表x=五、

也就是说:

Array.prototype.filterOutValue=函数(v){
变量x,i,len,结果;
_结果=[];
对于(_i=0,_len=this.length;_i<_len;_i++){
x=这个[_i];
如果(x!==v){
_结果:推(x);
}
}
返回结果;
};

发表评论