ECMA5数组的新增方法有哪些及forEach()模仿实现


Posted in Javascript onNovember 03, 2015

下面通过一段代码示例给大家介绍ECMA5数组的新方法forEach()模仿实现,具体代码如下所示,

var o = {
       forEach: function (callback) {
         // alert(this.length);
         for (var i = , len = this.length; i < len; i++) {
           callback && callback(this[i], i, this);
         }
       },
       get length(){
         var sum=;
         for(var n in this) {
           sum+=;
         }
         return sum;
       }
     };
     Object.defineProperty(o,"length",{enumerable:false});
     Object.defineProperty(o,"forEach",{enumerable:false});
     o[] = ;
     o[] = ;
     o[] = ;
     o.forEach(function(v,i,arr){
       arr[i]=v+;
       console.log(arr[i]+"callback");
     });

值得注意的是:

1.回调函数的使用

2.defineProperty以及defineProperties函数的意义

这两个函数都可以定义对象属性的四大特性--值,可写性,可枚举性,可配置性

下面还有点时间给大家介绍ECMA5中数组新增的几个方法如下所示:

今天在做练习的时候,偶遇fitter();以前看过这些数组的新方法,但一直没有用在实战中,趁着今天在复习一次;

forEaach()

这个方法是从头到尾遍历一个数组,然后为数组中的每个元素调用指定的函数。这个函数作为foreach的第一个参数。调用的函数可以有3个参数,分别是当前的数组元素,当前元素的索引,以及被遍历的数组,如果只有一个参数,那么这个参数就是当前的数组元素。

var data = [1,2,3,4,5] ;
// 计算数组的和
var sum = 0 ; 
data.forEach(function(value){sum += value; }); // 这里的value 分别代指 data[0~4];
console.log( sum ) // 15
// 每个数组元素自加1
data.forEach(function(v, i, a){ a[i] = v + 1; }) // v 分别代指 data[0~4]; a 代指data;
map() ;

map()方法将调用的数组的每个元素传递给制定的函数,并且返回一个数组(和调用数组的格式一模一样),塔包含改函数的返回值,注意:它必须有一个返回值,并且不会改变调用他的数组。

var a = [1,2,3];
b = a.map(function(x) { return x * x; });
filter()

这个函数的返回值是调用函数的一个子集,因为传给他的函数式用来做逻辑判断,如果为true,则把当前值推入这个要返回的子集数组中。

var getNum = function (a, b, k) {
return a.filter(function (v) {return b.indexOf(v) > -1;})[k-1];
}
var A = [3,4,5,6,7,8,9];
var B = [12,10,8,6];
console.log(getNum(A, B, 1))
console.log(getNum(A, B, 2));
every() some() ;

这两个函数的参数都是一个判定函数,对数组元素进行判断,而返回值为true或者false ;

在every()中只有当所有的数组元素调用判定函数且返回true ,其返回值才为true;有点类似&;

在some()中,只要有一个数组元素调用判定函数为true,就会返回true。

Javascript 相关文章推荐
基于JQuery的访问WebService的代码(可访问Java[Xfire])
Nov 19 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
Sep 10 Javascript
Javascript 实现图片无缝滚动
Dec 19 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
Mar 05 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
Mar 11 Javascript
使用JQuery选择HTML遍历函数的方法
Sep 17 Javascript
简单理解js的冒泡排序
Dec 19 Javascript
jQuery实现元素的插入
Feb 27 Javascript
js脚本编写简单刷票投票系统
Jun 27 Javascript
原生js实现简单的模态框示例
Sep 08 Javascript
ztree加载完成后显示勾选节点的实现代码
Oct 22 Javascript
vue强制刷新组件的方法示例
Feb 28 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
Nov 03 #Javascript
JS实现网页标题随机显示名人名言的方法
Nov 03 #Javascript
jQuery实用技巧必备(中)
Nov 03 #Javascript
jQuery实用技巧必备(上)
Nov 02 #Javascript
jQuery zclip插件实现跨浏览器复制功能
Nov 02 #Javascript
JQuery zClip插件实现复制页面内容到剪贴板
Nov 02 #Javascript
jquery实现简洁文件上传表单样式
Nov 02 #Javascript
You might like
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
javascript String 的扩展方法集合
2008/06/01 Javascript
js表格分页实现代码
2009/09/18 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
python模拟鼠标拖动操作的方法
2015/03/11 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Python @property装饰器原理解析
2020/01/22 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
python上下文管理的使用场景实例讲解
2021/03/03 Python
程序员跳槽必看面试题总结
2013/06/28 面试题
《青海高原一株柳》教学反思
2014/04/25 职场文书
2014年教研组工作总结
2014/11/26 职场文书
幼儿园小班家长评语
2014/12/30 职场文书
2016年大学光棍节活动总结
2016/04/05 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python