⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mixedcollection.js

📁 ajax框架extjs是一套完整的富客户端解决方案
💻 JS
📖 第 1 页 / 共 2 页
字号:
        return this.removeAt(this.indexOfKey(key));    },/** * Returns the number of items in the collection. * @return {Number} the number of items in the collection. */    getCount : function(){        return this.length;    },/** * Returns index within the collection of the passed Object. * @param {Object} o The item to find the index of. * @return {Number} index of the item. */    indexOf : function(o){        return this.items.indexOf(o);    },/** * Returns index within the collection of the passed key. * @param {String} key The key to find the index of. * @return {Number} index of the key. */    indexOfKey : function(key){        return this.keys.indexOf(key);    },/** * Returns the item associated with the passed key OR index. Key has priority over index.  This is the equivalent * of calling {@link #key} first, then if nothing matched calling {@link #itemAt}. * @param {String/Number} key The key or index of the item. * @return {Object} The item associated with the passed key. */    item : function(key){        var item = typeof this.map[key] != "undefined" ? this.map[key] : this.items[key];        return typeof item != 'function' || this.allowFunctions ? item : null; // for prototype!    },/** * Returns the item at the specified index. * @param {Number} index The index of the item. * @return {Object} The item at the specified index. */    itemAt : function(index){        return this.items[index];    },/** * Returns the item associated with the passed key. * @param {String/Number} key The key of the item. * @return {Object} The item associated with the passed key. */    key : function(key){        return this.map[key];    },/** * Returns true if the collection contains the passed Object as an item. * @param {Object} o  The Object to look for in the collection. * @return {Boolean} True if the collection contains the Object as an item. */    contains : function(o){        return this.indexOf(o) != -1;    },/** * Returns true if the collection contains the passed Object as a key. * @param {String} key The key to look for in the collection. * @return {Boolean} True if the collection contains the Object as a key. */    containsKey : function(key){        return typeof this.map[key] != "undefined";    },/** * Removes all items from the collection.  Fires the {@link #clear} event when complete. */    clear : function(){        this.length = 0;        this.items = [];        this.keys = [];        this.map = {};        this.fireEvent("clear");    },/** * Returns the first item in the collection. * @return {Object} the first item in the collection.. */    first : function(){        return this.items[0];    },/** * Returns the last item in the collection. * @return {Object} the last item in the collection.. */    last : function(){        return this.items[this.length-1];    },    // private    _sort : function(property, dir, fn){        var dsc = String(dir).toUpperCase() == "DESC" ? -1 : 1;        fn = fn || function(a, b){            return a-b;        };        var c = [], k = this.keys, items = this.items;        for(var i = 0, len = items.length; i < len; i++){            c[c.length] = {key: k[i], value: items[i], index: i};        }        c.sort(function(a, b){            var v = fn(a[property], b[property]) * dsc;            if(v == 0){                v = (a.index < b.index ? -1 : 1);            }            return v;        });        for(var i = 0, len = c.length; i < len; i++){            items[i] = c[i].value;            k[i] = c[i].key;        }        this.fireEvent("sort", this);    },    /**     * Sorts this collection with the passed comparison function     * @param {String} direction (optional) "ASC" or "DESC"     * @param {Function} fn (optional) comparison function     */    sort : function(dir, fn){        this._sort("value", dir, fn);    },    /**     * Sorts this collection by keys     * @param {String} direction (optional) "ASC" or "DESC"     * @param {Function} fn (optional) a comparison function (defaults to case insensitive string)     */    keySort : function(dir, fn){        this._sort("key", dir, fn || function(a, b){            return String(a).toUpperCase()-String(b).toUpperCase();        });    },    /**     * Returns a range of items in this collection     * @param {Number} startIndex (optional) defaults to 0     * @param {Number} endIndex (optional) default to the last item     * @return {Array} An array of items     */    getRange : function(start, end){        var items = this.items;        if(items.length < 1){            return [];        }        start = start || 0;        end = Math.min(typeof end == "undefined" ? this.length-1 : end, this.length-1);        var r = [];        if(start <= end){            for(var i = start; i <= end; i++) {        	    r[r.length] = items[i];            }        }else{            for(var i = start; i >= end; i--) {        	    r[r.length] = items[i];            }        }        return r;    },    /**     * Filter the <i>objects</i> in this collection by a specific property.     * Returns a new collection that has been filtered.     * @param {String} property A property on your objects     * @param {String/RegExp} value Either string that the property values     * should start with or a RegExp to test against the property     * @param {Boolean} anyMatch (optional) True to match any part of the string, not just the beginning     * @param {Boolean} caseSensitive (optional) True for case sensitive comparison (defaults to False).     * @return {MixedCollection} The new filtered collection     */    filter : function(property, value, anyMatch, caseSensitive){        if(Ext.isEmpty(value, false)){            return this.clone();        }        value = this.createValueMatcher(value, anyMatch, caseSensitive);        return this.filterBy(function(o){            return o && value.test(o[property]);        });	},    /**     * Filter by a function. Returns a <i>new</i> collection that has been filtered.     * The passed function will be called with each object in the collection.     * If the function returns true, the value is included otherwise it is filtered.     * @param {Function} fn The function to be called, it will receive the args o (the object), k (the key)     * @param {Object} scope (optional) The scope of the function (defaults to this)     * @return {MixedCollection} The new filtered collection     */    filterBy : function(fn, scope){        var r = new Ext.util.MixedCollection();        r.getKey = this.getKey;        var k = this.keys, it = this.items;        for(var i = 0, len = it.length; i < len; i++){            if(fn.call(scope||this, it[i], k[i])){				r.add(k[i], it[i]);			}        }        return r;    },    /**     * Finds the index of the first matching object in this collection by a specific property/value.     * @param {String} property The name of a property on your objects.     * @param {String/RegExp} value A string that the property values     * should start with or a RegExp to test against the property.     * @param {Number} start (optional) The index to start searching at (defaults to 0).     * @param {Boolean} anyMatch (optional) True to match any part of the string, not just the beginning.     * @param {Boolean} caseSensitive (optional) True for case sensitive comparison.     * @return {Number} The matched index or -1     */    findIndex : function(property, value, start, anyMatch, caseSensitive){        if(Ext.isEmpty(value, false)){            return -1;        }        value = this.createValueMatcher(value, anyMatch, caseSensitive);        return this.findIndexBy(function(o){            return o && value.test(o[property]);        }, null, start);	},    /**     * Find the index of the first matching object in this collection by a function.     * If the function returns <i>true</i> it is considered a match.     * @param {Function} fn The function to be called, it will receive the args o (the object), k (the key).     * @param {Object} scope (optional) The scope of the function (defaults to this).     * @param {Number} start (optional) The index to start searching at (defaults to 0).     * @return {Number} The matched index or -1     */    findIndexBy : function(fn, scope, start){        var k = this.keys, it = this.items;        for(var i = (start||0), len = it.length; i < len; i++){            if(fn.call(scope||this, it[i], k[i])){				return i;            }        }        if(typeof start == 'number' && start > 0){            for(var i = 0; i < start; i++){                if(fn.call(scope||this, it[i], k[i])){                    return i;                }            }        }        return -1;    },    // private    createValueMatcher : function(value, anyMatch, caseSensitive){        if(!value.exec){ // not a regex            value = String(value);            value = new RegExp((anyMatch === true ? '' : '^') + Ext.escapeRe(value), caseSensitive ? '' : 'i');        }        return value;    },    /**     * Creates a duplicate of this collection     * @return {MixedCollection}     */    clone : function(){        var r = new Ext.util.MixedCollection();        var k = this.keys, it = this.items;        for(var i = 0, len = it.length; i < len; i++){            r.add(k[i], it[i]);        }        r.getKey = this.getKey;        return r;    }});/** * Returns the item associated with the passed key or index. * @method * @param {String/Number} key The key or index of the item. * @return {Object} The item associated with the passed key. */Ext.util.MixedCollection.prototype.get = Ext.util.MixedCollection.prototype.item;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -