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')
}
some可用来处理复杂的搜索,比如同时判断多个条件:
var found = null;
var points = [ {x: 10, y: 20}, {x: 15, y: 53}, {x: 17, y: 72}];
points.some(function (point) {
if (point.x > 10 && point.y < 60) {
found = point; // found return true;
}
return false;
});
if (found) {
alert("Found: " + found.x + ", " + found.y); // Found: 15, 53
}
我们也可以用forEach来查询,但forEach到达指定的条件后并不能中止代码执行,需要额外抛出异常才能跳出forEach的循环。
------------------------------------------------------jquery操作数组的方法------------------------
使用grep()方法可以进行数组的筛选:
jQuery.grep( array, function(elementOfArray, indexInArray) [, invert ] )
-
array
用于查询元素的数组。
-
function(elementOfArray, indexInArray)
该函数来处理每项元素的比对。第一个参数是正在被检查的数组的元素,第二个参数是该元素的索引值。该函数应返回一个布尔值。this
将是全局的window对象。
-
invert
如果“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
相关推荐
一个 javascript 数组扩展库 演示 // Create a new empty list var list = new List ( ) ; // Create a new list based on an array var arr = [ 1 , 2 , 3 ] ; var list = new List ( arr ) ; // Add a value to ...
主要介绍了js数组方法扩展,实现数组统计函数,需要的朋友可以参考下
##Javascript 数组扩展 向 js 数组添加了一些函数 array.min() / array.max() :返回值数组的最小值/最大值 array.minBy(prop) / array.maxBy(prop) :返回具有属性prop的对象的最小值/最大值 array.toArray(prop) :...
JavaScript常用字符串与数组扩展函数小结_.docx
JS数组降维的几种方法详解 二维数组降维 使用数组实例方法concat和ES6扩展运算符降维 let arr=[1,2,[3,4],5]; let arr1=[].concat(...arr); //先使用扩展运算符打散最外边的数组,concat自带打散粘合数组的...
PHP函数库提供了编/解码JSON的函数:json_encode()和json_decode(),可以比较方便的传递数组或对象给javascript。注意:PHP 5.2以上才绑定了JSON扩展。 在php如下写: 代码如下:$arr = array(‘1’,array(‘2′,’3...
本文实例讲述了js实现prototype扩展的方法。分享给大家供大家参考,具体如下: String.prototype.isEmpty = function () { return !(/.?[^/s ]+/.test(this)); } //检测字符串是否为空 // 替换字符 String....
form 转化为真正的数组 先说一下使用场景,在Js中,我们要经常操作DOM,比如获取全部页面的input标签,并且找到类型为button的元素,然后给这个按钮注册一个点击事件,我们可能会这样操作; var inputObjs=...
主要对javascript的数组方法进行了详细的汇总,包括了最常用的的数组方法,还有扩展方法,很全面,感兴趣的小伙伴们可以参考一下
主要介绍了JS实现求数组起始项到终止项之和的方法,基于数组扩展函数实现该功能,涉及javascript针对数组的简单判断、遍历等相关操作技巧,需要的朋友可以参考下
从无忧转过来的数组的扩展 ,非常不错的把javascript数组的扩展
js代码-es6-数组扩展。
集合js 对本机javascript数组的简单扩展,添加了分页方法。
主要介绍了一些JavaScript常用字符串与数组扩展函数,整理了一些简单而使用率又高的操作String与Array的函数,需要的朋友可以参考下