WB8常用函数说明(二)
1:store
getRange() :获取整个store的所有Ext.data.Model[]
解释:store1.getRange()[0].getData()
数据数组
2:常用函数
返回 A-B的差异集合,从A中减去所有B中存在的元素
过滤掉数组里的空值,空值的定义见 Ext.isEmpty
克隆一个数组,而不引用原数组,注意着不同于Ext.clone,Ext.clone不递归克隆。 它把Array.prototype.slice.call(array)方法简化 成一个方便的、容易记住的方法。
检查数组中是否包含给定元素
返回 A-B的差异集合,从A中减去所有B中存在的元素
迭代一个数组或是可迭代的值,在每个元素上调用给定的回调函数
举例:
var countries = ['Vietnam', 'Singapore', 'United States', 'Russia']; .each(countries, function(name, index, countriesItSelf) { console.log(name); }); var sum = function() { var sum = 0; .each(arguments, function(value) { sum += value; }); return sum; }; sum(1, 2, 3); // 返回 6
.each(countries, function(name, index, countriesItSelf) { if (name === 'Singapore') { return false; // 此处中止 } });
移除数组中的多个元素。这个功能相当于Array的splice方法。 但是避免了IE8的splice函数bug,不会复制移除的元素并按次序返回它们。 (因为它们通常被忽略)
Creates a new array with all of the elements of this array for which the provided filtering function returns true.
递归将数组和数组中的元素转换为1维数组。
迭代一个数组,在每个元素上调用给定的回调函数。注意如果原生的Array.prototype.forEach被支持, 这个函数将委托到Array.prototype.forEach。它不支持像each一样, 通过返回一个false来停止迭代。 因此,其性能在现代的浏览器中会比each更好。
将一个值转换为一个数组,函数返回:
- 一个空数组,如果给定的值是
undefined
或null
- 数组本身,如果已经是一个数组
- 一个数组的拷贝,如果给定的值是 iterable (arguments, NodeList 等等)
- 一个包含给定值作为唯一元素的数组 ,其他情况
把一个元素插入到数组,如果它不存在于这个数组
查找指定元素在数组中的索引位置, 补充IE中缺少的arrayPrototype.indexOf原生方法。
在数组中插入多个元素
返回多个数组的公共交集
通过在数组的每个元素中调用一个特定函数,用结果创建一个新数组
返回数组中的最大值
计算数组中元素的平均值
合并多个数组中的不重复元素到一个数组
返回数组中的最小值
获取数组中每个元素的制定属性值. 示例:
.pluck(Ext.query("p"), "className"); // [el1.className, el2.className, ..., elN.className]
在数组的末尾添加新的元素
参数可能是一个元素集合、也可能是多个元素集合的数组。如果参数列表中存在一个数组, 则它的所有元素都将被添加到给定数组的末尾。
移除数组中的制定元素
替换数组里的多个元素。这个功能相当于Array的splice方法。 但是避免了IE8的splice函数bug,而且更便于使用, 因为它插入一个元素的数组,而不是一个可变参数列表。
返回一个数组中一部分的浅表复制。 等价于 原生方法 "Array.prototype.slice.call(array, begin, end)"。 经常被使用于数组 作为arguments,arguments对象没有提供slice方法, 但是可以作为上下文对象使用 Array.prototype.slice方法。
在数组的每个元素上执行指定函数,直到函数返回一个true值 如果某个元素上返回了true值,本函数立即返回true
排序数组中的元素 默认使用字母表,按升序排序
替换数组里的多个元素。这个功能相当于Array的splice方法。 但是避免了IE8的splice函数bug,除了第一个argument参数以外, 与splice方法的签名相同。 removeCount后面的所有参数都将被插入到指定位置。
计算数组中元素的和
将一个可迭代元素(具有数字下标和length属性)转换为一个真正的数组
function test() { var args = .toArray(arguments), fromSecondToLastArgs = .toArray(arguments, 1); alert(args.join(' ')); alert(fromSecondToLastArgs.join(' ')); } test('just', 'testing', 'here'); // 提示 'just testing here'; // 提示 'testing here'; .toArray(document.getElementsByTagName('div')); // 将把 NodeList 转换成一个数组 .toArray('splitted'); // returns ['s', 'p', 'l', 'i', 't', 't', 'e', 'd'] .toArray('splitted', 0, 3); // returns ['s', 'p', 'l']
使用给定数组中的元素作为key,创建一个map对象, 值是元素的索引+1。示例:
var map = .toMap(['a','b','c']); // map = { a: 1, b: 2, c: 3 }; var map = .toMap([ { name: 'a' }, { name: 'b' }, { name: 'c' } ], 'name'); // map = { a: 1, b: 2, c: 3 }; var map = .toMap([ { name: 'a' }, { name: 'b' }, { name: 'c' } ], function (obj) { return obj.name.toUpperCase(); }); // map = { A: 1, B: 2, C: 3 };
合并多个数组中的不重复元素到一个数组
返回一个去掉重复元素的新数组
3:EXT.Object
迭代一个对象,在每个迭代上调用给定的回调函数 在回调函数中返回 false
可以停止迭代. 示例:
var person = { name: 'Jacky' hairColor: 'black' loves: ['food', 'sleeping', 'wife'] }; Ext.Object.each(person, function(key, value, myself) { console.log(key + ":" + value); if (key === 'hairColor') { return false; // 停止迭代 } });
将查询字符串转换回对象。
不递归:
Ext.Object.fromQueryString("foo=1&bar=2"); // 返回 {foo: 1, bar: 2} Ext.Object.fromQueryString("foo=&bar=2"); // 返回 {foo: null, bar: 2} Ext.Object.fromQueryString("some%20price=%24300"); // 返回 {'some price': '$300'} Ext.Object.fromQueryString("colors=red&colors=green&colors=blue"); // 返回 {colors: ['red', 'green', 'blue']}
递归:
Ext.Object.fromQueryString( "username=Jacky&"+ "dateOfBirth[day]=1&dateOfBirth[month]=2&dateOfBirth[year]=1911&"+ "hobbies[0]=coding&hobbies[1]=eating&hobbies[2]=sleeping&"+ "hobbies[3][0]=nested&hobbies[3][1]=stuff", true); // 返回 { username: 'Jacky', dateOfBirth: { day: '1', month: '2', year: '1911' }, hobbies: ['coding', 'eating', 'sleeping', ['nested', 'stuff']] }
根据指定的值,返回第一个匹配的key. 如果没有匹配的值,将返回null.
var person = { name: 'Jacky', loves: 'food' }; alert(Ext.Object.getKey(person, 'food')); // 弹出警告 'loves'
获取所有对象的key组成的数组
var values = Ext.Object.getKeys({ name: 'Jacky', loves: 'food' }); // ['name', 'loves']
获取此对象的所有自有属性的数目
var size = Ext.Object.getSize({ name: 'Jacky', loves: 'food' }); // size 等于 2
获取给定对象所有的值组成的数组。
var values = Ext.Object.getValues({ name: 'Jacky', loves: 'food' }); // ['Jacky', 'food']
递归的合并任意数目的对象,但是不引用他们或他们的子对象。
var extjs = { companyName: 'Ext JS', products: ['Ext JS', 'Ext GWT', 'Ext Designer'], isSuperCool: true, office: { size: 2000, location: 'Palo Alto', isFun: true } }; var newStuff = { companyName: 'Sencha Inc.', products: ['Ext JS', 'Ext GWT', 'Ext Designer', 'Sencha Touch', 'Sencha Animator'], office: { size: 40000, location: 'Redwood City' } }; var sencha = Ext.Object.merge(extjs, newStuff); // 此时extjs和sencha等于 { companyName: 'Sencha Inc.', products: ['Ext JS', 'Ext GWT', 'Ext Designer', 'Sencha Touch', 'Sencha Animator'], isSuperCool: true, office: { size: 40000, location: 'Redwood City', isFun: true } }
将一个name
- value
对转换为一个对象数组,支持内部结构的转换,对构造查询字符串非常有用。 示例:
var objects = Ext.Object.toQueryObjects('hobbies', ['reading', 'cooking', 'swimming']); // objects此时等于: [ { name: 'hobbies', value: 'reading' }, { name: 'hobbies', value: 'cooking' }, { name: 'hobbies', value: 'swimming' }, ]; var objects = Ext.Object.toQueryObjects('dateOfBirth', { day: 3, month: 8, year: 1987, extra: { hour: 4 minute: 30 } }, true); // 递归 // objects此时等于: [ { name: 'dateOfBirth[day]', value: 3 }, { name: 'dateOfBirth[month]', value: 8 }, { name: 'dateOfBirth[year]', value: 1987 }, { name: 'dateOfBirth[extra][hour]', value: 4 }, { name: 'dateOfBirth[extra][minute]', value: 30 }, ];
将一个对象转换成编码的查询字符串
不递归:
Ext.Object.toQueryString({foo: 1, bar: 2}); // 返回 "foo=1&bar=2" Ext.Object.toQueryString({foo: null, bar: 2}); // 返回 "foo=&bar=2" Ext.Object.toQueryString({'some price': '$300'}); // 返回 "some%20price=%24300" Ext.Object.toQueryString({date: new Date(2011, 0, 1)}); // 返回 "date=%222011-01-01T00%3A00%3A00%22" Ext.Object.toQueryString({colors: ['red', 'green', 'blue']}); // 返回 "colors=red&colors=green&colors=blue"
递归:
Ext.Object.toQueryString({ username: 'Jacky', dateOfBirth: { day: 1, month: 2, year: 1911 }, hobbies: ['coding', 'eating', 'sleeping', ['nested', 'stuff']] }, true); // 返回如下字符串(换行和url-decoded是为了便于阅读的目的): // username=Jacky // &dateOfBirth[day]=1&dateOfBirth[month]=2&dateOfBirth[year]=1911 // &hobbies[0]=coding&hobbies[1]=eating&hobbies[2]=sleeping&hobbies[3][0]=nested&hobbies[3][1]=stuff
在数组的每个元素上执行指定函数,直到函数返回一个false值 如果某个元素上返回了false值,本函数立即返回false 否则函数返回true