Getter/setter on javascript array?

前端 未结 10 2173
闹比i
闹比i 2020-12-01 02:12

Is there a way to get a get/set behaviour on an array? I imagine something like this:

var arr = [\'one\', \'two\', \'three\'];
var _arr = new Array();

for (         


        
10条回答
  •  [愿得一人]
    2020-12-01 02:34

    I hope it helps.

    Object.extend(Array.prototype, {
        _each: function(iterator) {
                        for (var i = 0; i < this.length; i++)
                        iterator(this[i]);
                    },
        clear: function() {
                        this.length = 0;
                        return this;
                    },
        first: function() {
                        return this[0];
                    },
        last: function() {
                    return this[this.length - 1];
                    },
        compact: function() {
            return this.select(function(value) {
                                                    return value != undefined || value != null;
                                                    }
                                                );
            },
        flatten: function() {
                return this.inject([], function(array, value) {
                        return array.concat(value.constructor == Array ?
                            value.flatten() : [value]);
                        }
                );
            },
        without: function() {
            var values = $A(arguments);
                    return this.select(function(value) {
                            return !values.include(value);
                    }
                );
        },
        indexOf: function(object) {
            for (var i = 0; i < this.length; i++)
            if (this[i] == object) return i;
            return -1;
        },
        reverse: function(inline) {
                return (inline !== false ? this : this.toArray())._reverse();
            },
        shift: function() {
            var result = this[0];
            for (var i = 0; i < this.length - 1; i++)
            this[i] = this[i + 1];
            this.length--;
            return result;
        },
        inspect: function() {
                return '[' + this.map(Object.inspect).join(', ') + ']';
            }
        }
    );
    

提交回复
热议问题