您现在的位置:首页 --> JavaScript --> javascript扩展Array(数组)类
javascript扩展Array(数组)类
浏览:3854次 出处信息
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);
建议继续学习:
- 为什么数组标号是从0开始的? (阅读:5824)
- C语言结构体里的成员数组和指针 (阅读:5719)
- 将数组定义为常量 (阅读:5253)
- Tips of Linux C programming (阅读:4766)
- xml转数组的方法 (阅读:4276)
- 动态数组的 C 实现 (阅读:3745)
- php数组排序 (阅读:3745)
- 一个 VLA (可变长度数组)的实现 (阅读:3746)
- javascript数组排序的问题 (阅读:3561)
- 关于Cannot use a scalar value as an array的解决办法 (阅读:3309)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:10个超棒jQuery表单操作代码片段
后一篇:取得当前script元素的src(path) >>
文章信息
- 作者:九监九介 来源: 深海博客
- 标签: Array 数组
- 发布时间:2012-12-11 13:40:11
建议继续学习
近3天十大热文
-
[917] WordPress插件开发 -- 在插件使用 -
[135] 解决 nginx 反向代理网页首尾出现神秘字 -
[54] 整理了一份招PHP高级工程师的面试题 -
[53] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] Innodb分表太多或者表分区太多,会导致内 -
[52] 海量小文件存储 -
[51] 全站换域名时利用nginx和javascri -
[51] 用 Jquery 模拟 select -
[50] CloudSMS:免费匿名的云短信 -
[48] jQuery性能优化指南
