趁着这段项目少,对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对象方法扩展相关推荐

  1. JavaScript-原生Array对象方法详解(一)

    1.join() join() 方法用于把数组中的所有元素转换为一个字符串.元素是通过指定的分隔符进行分隔的. arrayObject.join(separator)参数代表分隔符,是可选的.如果不传 ...

  2. js中转换json对象方法详解及使用案例

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使使JSON称为理想的数据交换语 ...

  3. JavaScript中的Array对象方法调用

    方法concat for  循环与for in 循环 <html> <head> <script type="text/javascript"> ...

  4. JS:数组Array的方法(增删改查):push() 、pop() 、unshift()、 shift()、concat()、join()、reverse()、sort()

    push() 该方法可以向数组的末尾添加一个或多个元素. 可以将要添加的元素作为方法的参数传递,这样元素会自动添加到数组末尾. 该方法会将数组新的长度作为返回值返回. let arr = [" ...

  5. JavaScript Array 对象方法

    data.sort(function(a,b){return a.time>b.time?1:-1}); http://www.w3school.com.cn/jsref/jsref_obj_a ...

  6. 夯实基础,彻底掌握js的核心技术(四):ES5、ES6对象方法详解

    ES5 Object 对象方法扩展 ES5给Object扩展了一些静态方法,常用的2个 Object.create(prototype,[descriptors]) 作用:以指定对象为原型创建新的对象 ...

  7. JS基础-Array对象手册

    2019独角兽企业重金招聘Python工程师标准>>> Array 对象属性 属性 描述 constructor 返回对创建此对象的数组函数的引用. length 设置或返回数组中元 ...

  8. JavaScript Array 对象(length)方法 (contact、push,pop,join,map、reverse、slice、sort)

    一.Array对象属性 1.length 设置或返回数组中元素的数目. 数组的 length 属性总是比数组中定义的最后一个元素的下标大 1.对于那些具有连续元素,而且以元素 0 开始的常规数组而言, ...

  9. javascript中的array对象属性及方法

    Array 对象 Array 对象用于在单个的变量中存储多个值. 创建 Array 对象的语法: new Array(); new Array(size); new Array(element0, e ...

最新文章

  1. 高精地图:为自动驾驶汽车提供动力的新时代地图
  2. 位置式PID与增量式PID的介绍和代码实现
  3. 云栖·追踪云原生|Serverless入围阿里云十大核心技术
  4. 时间序列总结.pptx
  5. mysql opti_MySQL基础操作
  6. 2017西安交大ACM小学期 毁灭序列[倒跑并查集]
  7. css中设置br标签之后的样式_CSS学习
  8. 将数据流链接到加密转换的流CryptoStream 类
  9. Java Collections list()方法与示例
  10. (STTN)Learning Joint Spatial-TemporalTransformations for Video Inpainting
  11. activemq消息丢失_Kafka or RabbitMQ:消息中间件选型深入分析
  12. 【Antlr】Antlr生成调用图
  13. c++string类的相关操作
  14. 软件测试HW3 主路径覆盖测试
  15. linux vi指令回退,Linux命令 vi vim
  16. 七牛base64上传图片带格式
  17. SkipList(跳跃表)详解
  18. 熊猫的python小课_老熊的三分地-Oracle及数据恢复
  19. RAB与RB的关系详解
  20. Ubuntu 20.04 + ROS Noetic + OpenCV 4.10编译kalibr相机标定功能包

热门文章

  1. HBase完全分布式搭建
  2. Activity管理类,随时随地退出应用程序
  3. python︱用asyncio、aiohttp实现异步及相关案例
  4. SSD+caffe︱Single Shot MultiBox Detector 目标检测(一)
  5. 加快网站速度的最佳做法_(1)最小化http请求
  6. SourceTree的使用
  7. scala-jdbc-scalike操作jdbc数据库
  8. 网秦任命两位新董事 成立投资委员会
  9. 第21章 java线程(1)-线程初步
  10. Haproxy配置http模式负载均衡