js数组的扩展方法
来源:互联网 发布:马化腾第一个软件 编辑:程序博客网 时间:2024/05/18 09:54
1、用于清空数组
- Array.prototype.clear = function() {
- this.length = 0;
- }
2、判断数据项在数组中的位置
varoldArrayIndexOf = Array.indexOf;//判断是否原始浏览器是否存在indexOf方法Array.prototype.indexOf = function(obj) { if(!oldArrayIndexOf) { for(vari = 0, imax = this.length; i < imax; i++) { if(this[i] === obj) { returni; } } return-1; } else{ returnoldArrayIndexOf(obj); }}
3、判断数据项是否在该数组中
Array.prototype.contain = function(obj) { returnthis.indexOf(obj) !== -1;}
4、把数据项添加到指定的位置
Array.prototype.insertAt = function(index, obj) { if(index < 0) index = 0; if(index > this.length) index = this.length; this.length++; for(vari = this.length - 1; i > index; i--) { this[i] = this[i - 1]; } this[index] = obj;}
5、返回最有一项数据
Array.prototype.last = function() { returnthis[this.length - 1];}
6、移除数组指定索引的值
Array.prototype.removeAt = function(index) { if(index < 0 || index >= this.length) return; varitem = this[index]; for(vari = index, imax = this.length - 2; i < imax; i++) { this[i] = this[i + 1]; } this.length--; returnitem; }
7、移除数据项的数据
Array.prototype.removeAt = function(obj) { varindex = this.indexOf(obj); if(index >= 0) this.removeAt(index);}
8、用于数组的查询
用于查询对象数组中对象的某些值,同时支持对已查询属性进行重命名,若查询的属性不在改数组中,则该属性返回为undefined
- Array.prototype.select = function(args) {
- varnewItems = [];
- if(typeof(args) === "object"&& arguments.length === 1) {//传入查询的参数为对象时的处理方式
- for(vari = 0, imax = this.length; i < imax; i++) {
- varitem = {};
- for(varkey inargs) {
- if(args[key] !== undefined) {
- item[key] = this[i][key] === undefined ? "undefined": this[i][key];
- }
- }
- newItems.push(item);
- }
- } elseif(typeof(args) === "string"&& arguments.length === 1) {//传入参数为字符串,且只有一个参数的处理方式
- for(vari = 0, imax = this.length; i < imax; i++) {
- varitem = {};
- varkeys = args.split(',');
- for(vark = 0, kmax = keys.length; k < kmax; k++) {
- variKey = keys[k].split("as");
- if(iKey.length === 1) {
- item[iKey[0].trim()] = this[i][iKey[0].trim()] === undefined ? "undefined": this[i][iKey[0].trim()];
- } else{
- item[iKey[1].trim()] = this[i][iKey[0].trim()] === undefined ? "undefined": this[i][iKey[0].trim()];
- }
- }
- newItems.push(item);
- }
- } else{//传入的参数是多个字符串的处理方式
- for(vari = 0, imax = this.length; i < imax; i++) {
- varitem = {};
- for(varj = 0, jmax = arguments.length; j < jmax; j++) {
- if(arguments[j] !== undefined) {
- variKey = arguments[j].split("as");
- if(iKey.length === 1) {
- item[iKey[0].trim()] = this[i][iKey[0].trim()] === undefined ? "undefined": this[i][iKey[0].trim()];
- } else{
- item[iKey[1].trim()] = this[i][iKey[0].trim()] === undefined ? "undefined": this[i][iKey[0].trim()];
- }
- }
- }
- newItems.push(item);
- }
- }
- returnnewItems;
- }
假设数据对象数组为:var obj = [{ name: "张三", second.age: "24", sex: "男" }
, { name: "张二", age: "21", sex: "女" }
, { name: "张一", age: "23", sex: "男" }
, { name: "张四", age: "25", sex: "女" }
, { name: "张五", age: "22", sex: "男"}];
例一:obj.select(“name,second.age as age,sex”);
例二:obj.select(“name”,”second.age as age”,”sex”);
例三:查询属性对象var arg={name:”",second.age:”",sex:”"};
obj.select(arg);
9,js数组some方法的运用
数组some方法接受2个参数;一个是可以接受3个参数的回调函数,一个是代表执行上下文的对象,some方法返回boolean型;
回调函数是用来判断传入的数组中是否有满足条件的方法编写;
例如:查找数组中是否存在某元素:
- var arr =[2,3,5,6,7,9];
- var id = 5;
- //回调函数,用于做逻辑判断
- function back(arr){
- return arr === id;
- }
- if(arr.some(back)){
- alert('true')
- }else{
- alert('false')
- }
jQuery.grep( array, function(elementOfArray, indexInArray) [, invert ] )
- array类型: Array用于查询元素的数组。
- function(elementOfArray, indexInArray)类型: Function()该函数来处理每项元素的比对。第一个参数是正在被检查的数组的元素,第二个参数是该元素的索引值。该函数应返回一个布尔值。
this
将是全局的window对象。 - invert类型: Boolean如果“invert”为false,或没有提供,函数返回一个“callback”中返回true的所有元素组成的数组,。如果“invert”为true,函数返回一个“callback”中返回false的所有元素组成的数组。
返回的是满足条件的数组;
扩展链接:http://www.css88.com/jqapi-1.9/jQuery.grep/
-------也可以使用array 的 some方法:
不同的是some方法只要数组中有一个满足条件的,就会返回true,some方法中传入的参数是一个回调函数;
var array = [1,2,3,4,5,9]
function back(arr){
arr >0//arr代表数组中的元素
}
array.some(back(array));//true
- js数组的扩展方法
- js数组方法扩展
- js去掉数组重复的扩展方法
- js Array 数组方法扩展
- JS数组字符串方法扩展
- 扩展js对象数组的OrderByAsc和OrderByDesc方法
- js数组包含、插入、删除方法的扩展
- js 数组扩展元素去重的方法
- JS中数组的常用方法(包含es6扩展)
- JS中数组的常用方法(包含es6扩展)
- moment.js的扩展方法
- js数组的方法
- JS数组的方法
- js数组的方法
- js数组的方法
- JS数组的方法
- js数组的方法
- JS 数组的删除与判断是否存在的两个扩展方法
- 转:java二维码工具类,中间带LOGO的,很强大
- 去除数组中重复的元素
- Java制作圆形按钮
- ios uiwebview 长按图片,保存到本地相册
- Android之Camera拍照插值算法
- js数组的扩展方法
- ArcGIS三维建模(二)
- SQL 判断对象是否存在
- The connection to adb is down, and a severe error has occured.adb server is out of date. killing...
- 类的概念与简例
- ScriptManager UpdatePanel 不是已知元素,网站编译存在错误
- 数据结构面试题之一----链表
- LeetCode(13) RomanToInteger
- Hadoop集群_Hadoop安装配置