CoffeeScript:
Array::remove = (e) -> @[t..t] = [] if (t = @indexOf(e)) > -1
Which simply splices out the element at position t
, the index where e
was found (if it was actually found t > -1
). Coffeescript translates this to:
Array.prototype.remove = function(e) {
var t, _ref;
if ((t = this.indexOf(e)) > -1) {
return ([].splice.apply(this, [t, t - t + 1].concat(_ref = [])), _ref);
}
};
And if you want to remove all matching elements, and return a new array, using CoffeeScript and jQuery:
Array::remove = (v) -> $.grep @,(e)->e!=v
which translates into:
Array.prototype.remove = function(v) {
return $.grep(this, function(e) {
return e !== v;
});
};
Or doing the same without jQuery’s grep:
Array::filterOutValue = (v) -> x for x in @ when x!=v
which translates to:
Array.prototype.filterOutValue = function(v) {
var x, _i, _len, _results;
_results = [];
for (_i = 0, _len = this.length; _i < _len; _i++) {
x = this[_i];
if (x !== v) {
_results.push(x);
}
}
return _results;
};