Ext.util.MixedCollection-->排序,克隆,过滤
来源:互联网 发布:校园网络交流平台 编辑:程序博客网 时间:2024/05/02 00:33
key排序和sort排序都是调用内部的_sort函数
property参数是用来判断是排序key还是value的标识
_sort : function(property, dir, fn){ var i, len, dsc = String(dir).toUpperCase() == 'DESC' ? -1 : 1, //弄一个数组c,以便能使用js原生的sort函数 c = [], keys = this.keys, items = this.items; //默认的排序函数,很显然只能排序 asc||字符 fn = fn || function(a, b) { return a - b; }; //copy all the items into a temporary array, which we will sort for(i = 0, len = items.length; i < len; i++){ //数组里的元素存放的是{},{}里复制了一套key和item和索引位置 c[c.length] = { key : keys[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; });
浅克隆,如果复制的是对象那么复制的是引用。
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; }
如果实现对象的深克隆,可以先Ext.encode再Ext.decode,和java的序列化反序列话实现深克隆一样道理
Ext.util.MixedCollection提供了2种过滤方式,一种是基于正则表达式的,一种是基于使用者传入的过滤函数的(这个函数需要返回boolean,true留下,false过滤掉)
基于正则表达式的
构建正则表达式的工具函数
根据传入的第一个参数(我们应该为其传入字符串),和其他配置项,构建一个正则表达式
createValueMatcher : function(value, anyMatch, caseSensitive, exactMatch) { if (!value.exec) { // not a regex var er = Ext.escapeRe; value = String(value); //全局匹配 if (anyMatch === true) { value = er(value); } else { value = '^' + er(value); //精准匹配,匹配的必定是一个单词 (^ $)开头结尾 if (exactMatch === true) { value += '
; } } //构建正则表达式 value = new RegExp(value, caseSensitive ? '' : 'i'); } return value; },
filter,filterBy返回的是一个原Ext.util.MixedCollection对象过滤后的副本
- Ext.util.MixedCollection-->排序,克隆,过滤
- 解读Ext.util.MixedCollection(一)之基本操作
- Extjs-实用工具 混合型集合 Ext.util.MixedCollection
- ext MixedCollection 类
- Ext.data.Store 关于排序和过滤的小结
- Ext.util工具包详解
- Ext.util.md5
- Ext中util
- Ext.util.Format 系列
- Ext.util.Observable用法
- ext store 过滤方法
- Ext学习06util包
- Ext.util.TaskRunner 执行一次
- 单链表排序及克隆
- Ext Ext.Decode = Ext.util.JSON.Decode 方法介绍
- Ext Tree 过滤 树 过滤 代码
- Ext store 过滤数据技巧
- Ext store 过滤数据技巧
- C++完美实现Singleton模式
- linux文件误删除恢复
- VB工程--百例86--播放flash动画.
- Joomla 开发Memo
- 安装KB2536276补丁引起不能使用SymSMB访问手机共享目录的方法
- Ext.util.MixedCollection-->排序,克隆,过滤
- iphone开发之轻松搞定原生socket 编程,阻塞与非阻塞,收发自如
- Servlet容器的类加载器加载顺序
- 个人总结.
- 提问的智慧
- cudaSafeCall() Runtime API error : unspecified driver error
- JS Replace 全部替换字符 用法
- 打开IE时,弹出对话窗口,提示“您计算机上某个程序已损坏了您对 Internet Explorer 默认搜索提供程序的设置”
- vc的一些文件后缀