js常用方法之Array对象方法扩展
趁着这段项目少,对Array零散的知识进行一下梳理和总结,以便下次使用,代码如下:
1 /** 2 * 数组通用扩展方法 3 * 4 * @author lixiangqian 20130419 5 */ 6 ;(function() { 7 /** 8 * 查看数组中是否包含value值项 9 * 10 * @param {String} 11 * value 要搜索值 12 * @param {Number} 13 * fromIndex 开始搜索下标(可选) 14 * @param {Number} 15 * toIndex 结束搜索下标(可选) 16 * @return {Boolean} 找到返回true,否则返回false 17 */ 18 Array.prototype.contain = function(value, fromIndex, toIndex) { 19 fromIndex = fromIndex || 0; 20 toIndex = toIndex || (this.length - 1); 21 fromIndex = fromIndex > toIndex ? toIndex : fromIndex; 22 toIndex = toIndex >= this.length ? this.length - 1 : toIndex; 23 for ( var i = fromIndex; i <= toIndex; i++) { 24 if (this[i] == value) { 25 return true; 26 } 27 } 28 return false; 29 }; 30 31 /** 32 * 去掉数组中重复值 33 * 34 * @returns {Array} 返回一个没有重复值的数组 35 */ 36 Array.prototype.unique = function() { 37 var aCache = {}; 38 var _tmpArray = []; 39 for ( var i = 0; i < this.length; i++) { 40 if (!aCache[this[i]]) { 41 aCache[this[i]] = true; 42 _tmpArray.push(this[i]); 43 } 44 } 45 return _tmpArray; 46 }; 47 48 /** 49 * 重写数组toString方法,将数组中元素转换为字符串形式,元素跟元素之间用seperator分割 50 * 51 * @param {String} 52 * seperator(可选,默认:',') 53 * @returns {String} 54 */ 55 Array.prototype.toString = function(seperator) { 56 return this.join(seperator || ','); 57 }; 58 59 /** 60 * 返回在此数组中第一次出现指定元素处的索引,从指定的索引开始搜索 61 * 62 * @param {Any} 63 * value 指定元素 64 * @param {Number} 65 * fromIndex 开始搜索的索引(可选,默认为0) 66 * @returns {Number} 找到返回所在数组索引,否则返回-1 67 */ 68 Array.prototype.indexOf = function(value, fromIndex) { 69 if (typeof value == 'undefined') 70 return -1; 71 var _len = this.length - 1; 72 fromIndex = fromIndex || 0; 73 for ( var i = fromIndex; i <= _len; i++) { 74 if (this[i] == value) { 75 return i; 76 } 77 } 78 return -1; 79 }; 80 81 /** 82 * 返回指定元素在此数组中最后一次出现处的索引,从指定的索引开始反向搜索 83 * 84 * @param {Any} 85 * value 指定元素 86 * @param {Number} 87 * fromIndex 开始搜索的索引(可选,默认为0) 88 * @returns {Number} 找到返回所在数组索引,否则返回-1 89 */ 90 Array.prototype.lastIndexOf = function(value, fromIndex) { 91 if (typeof value == 'undefined') 92 return -1; 93 var _len = this.length - 1; 94 fromIndex = fromIndex || 0; 95 for ( var i = _len; i >= fromIndex; i++) { 96 if (this[i] == value) { 97 return i; 98 } 99 } 100 return -1; 101 }; 102 103 /** 104 * 过滤数组元素 对数组中每个元素执行fnCallBack方法进行过滤 105 * 106 * @param ${Function} 107 * fnCallBack (当前元素所在数组索引,当前元素,数组) 过滤回调方法 方法返回false,此元素将被过滤掉 108 * @returns {Array} 返回过滤后数组 109 */ 110 Array.prototype.filter = function(fnCallBack) { 111 if (typeof fnCallBack == 'function') { 112 var _tmpArray = []; 113 var _len = this.length - 1; 114 for ( var i = 0; i <= _len; i++) { 115 if (fnCallBack.call(this[i], i, this[i], this)) { 116 _tmpArray.push(this[i]); 117 } 118 } 119 return _tmpArray; 120 } 121 return this; 122 }; 123 124 /** 125 * 遍历数组元素 126 * 127 * @param fnCallBack 128 * 回调函数 fnCallBack(当前元素所在数组索引,当前元素,数组) 129 * @returns {Array} 返回当前数组,以便进行链式操作 如:arr.each(fn).toString(); 130 */ 131 Array.prototype.each = function(fnCallBack) { 132 if (typeof fnCallBack == 'function') { 133 var _len = this.length - 1; 134 for ( var i = 0; i <= _len; i++) { 135 fnCallBack.call(this[i], i, this[i], this); 136 } 137 } 138 return this; 139 }; 140 })();
ps:
1、完整的javascript代码应包含详细、规范的注释,以便后来代码维护
2、javascript应尽量闭包,以防止全局变量污染和利于垃圾回收,降低内存开销
转载于:https://www.cnblogs.com/codebymuzi/archive/2013/04/19/3030985.html
js常用方法之Array对象方法扩展相关推荐
- JavaScript-原生Array对象方法详解(一)
1.join() join() 方法用于把数组中的所有元素转换为一个字符串.元素是通过指定的分隔符进行分隔的. arrayObject.join(separator)参数代表分隔符,是可选的.如果不传 ...
- js中转换json对象方法详解及使用案例
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使使JSON称为理想的数据交换语 ...
- JavaScript中的Array对象方法调用
方法concat for 循环与for in 循环 <html> <head> <script type="text/javascript"> ...
- JS:数组Array的方法(增删改查):push() 、pop() 、unshift()、 shift()、concat()、join()、reverse()、sort()
push() 该方法可以向数组的末尾添加一个或多个元素. 可以将要添加的元素作为方法的参数传递,这样元素会自动添加到数组末尾. 该方法会将数组新的长度作为返回值返回. let arr = [" ...
- JavaScript Array 对象方法
data.sort(function(a,b){return a.time>b.time?1:-1}); http://www.w3school.com.cn/jsref/jsref_obj_a ...
- 夯实基础,彻底掌握js的核心技术(四):ES5、ES6对象方法详解
ES5 Object 对象方法扩展 ES5给Object扩展了一些静态方法,常用的2个 Object.create(prototype,[descriptors]) 作用:以指定对象为原型创建新的对象 ...
- JS基础-Array对象手册
2019独角兽企业重金招聘Python工程师标准>>> Array 对象属性 属性 描述 constructor 返回对创建此对象的数组函数的引用. length 设置或返回数组中元 ...
- JavaScript Array 对象(length)方法 (contact、push,pop,join,map、reverse、slice、sort)
一.Array对象属性 1.length 设置或返回数组中元素的数目. 数组的 length 属性总是比数组中定义的最后一个元素的下标大 1.对于那些具有连续元素,而且以元素 0 开始的常规数组而言, ...
- javascript中的array对象属性及方法
Array 对象 Array 对象用于在单个的变量中存储多个值. 创建 Array 对象的语法: new Array(); new Array(size); new Array(element0, e ...
最新文章
- 高精地图:为自动驾驶汽车提供动力的新时代地图
- 位置式PID与增量式PID的介绍和代码实现
- 云栖·追踪云原生|Serverless入围阿里云十大核心技术
- 时间序列总结.pptx
- mysql opti_MySQL基础操作
- 2017西安交大ACM小学期 毁灭序列[倒跑并查集]
- css中设置br标签之后的样式_CSS学习
- 将数据流链接到加密转换的流CryptoStream 类
- Java Collections list()方法与示例
- (STTN)Learning Joint Spatial-TemporalTransformations for Video Inpainting
- activemq消息丢失_Kafka or RabbitMQ:消息中间件选型深入分析
- 【Antlr】Antlr生成调用图
- c++string类的相关操作
- 软件测试HW3 主路径覆盖测试
- linux vi指令回退,Linux命令 vi vim
- 七牛base64上传图片带格式
- SkipList(跳跃表)详解
- 熊猫的python小课_老熊的三分地-Oracle及数据恢复
- RAB与RB的关系详解
- Ubuntu 20.04 + ROS Noetic + OpenCV 4.10编译kalibr相机标定功能包