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 相关文章推荐
javascript 字符 Escape,encodeURI,encodeURIComponent
Jul 09 Javascript
jquery二级导航内容均分的原理及实现
Aug 13 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
Mar 16 Javascript
JavaScript获取页面中表单(form)数量的方法
Apr 03 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
Nov 04 Javascript
浅谈JS原型对象和原型链
Mar 02 Javascript
浅谈angularJS的$watch失效问题的解决方案
Aug 11 Javascript
使用node.js实现微信小程序实时聊天功能
Aug 13 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
Sep 04 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
Nov 26 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
Sep 11 Javascript
vue实现下拉菜单树
Oct 22 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
php语言流程控制中的主动与被动
2012/11/05 PHP
php获取发送给用户的header信息的方法
2015/03/16 PHP
php判断访问IP的方法
2015/06/19 PHP
Javascript基础知识(二)事件
2014/09/29 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
Prototype框架详解
2015/11/25 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
python动态加载包的方法小结
2016/04/18 Python
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
Linux的文件类型
2012/03/07 面试题
制药工程专业毕业生推荐信
2013/12/24 职场文书
生产车间主管岗位职责
2013/12/28 职场文书
求职信写作要突出重点
2014/01/01 职场文书
集体婚礼证婚词
2014/01/13 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
导游词之任弼时故居
2020/01/07 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
Golang 对es的操作实例
2022/04/20 Golang
MySQL数据库查询之多表查询总结
2022/08/05 MySQL