咖啡脚本:
Array::remove = (e) -> @[t..t] = [] if (t = @indexOf(e)) > -1
它只是拼接出 position 处的元素t
,即找到的索引e
(如果它实际上是找到的t > -1
)。Coffeescript 将其翻译为:
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);
}
};
如果你想删除所有匹配的元素,并返回一个新数组,使用 CoffeeScript 和 jQuery:
Array::remove = (v) -> $.grep @,(e)->e!=v
这转化为:
Array.prototype.remove = function(v) {
return $.grep(this, function(e) {
return e !== v;
});
};
或者在没有 jQuery 的 grep 的情况下做同样的事情:
Array::filterOutValue = (v) -> x for x in @ when x!=v
翻译为:
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;
};