Array.implement({ getFirst: function(n){ return (n || n === 0) ? this.slice(0, n) : this[0] }, getLast: function(n){ if (n >= this.length) return this return (n || n === 0) ? this.slice(this.length - n, this.length) : this[this.length - 1] }, deleteIf: function(fn){ for (var i = 0, length = this.length; i < length; i++) { var el = this.shift() if (!fn.call(el)) this.push(el) } return this }, filterOne: function(fn, bind){ return this.filter(fn, bind).getFirst() }, isBlank: function(){ return this.length == 0 }, hasAny: function(){ return !this.isBlank() } }) Array.alias('first', 'getFirst') Array.alias('last', 'getLast') Array.alias('select', 'filter') Array.alias('selectOne', 'filterOne') Array.alias('compact', 'clean') Array.alias('isEmpty', 'isBlank')