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 live( type, fn ) 委派事件实现
Oct 11 Javascript
js Function类型
Dec 04 Javascript
Extjs Gird 支持中文拼音排序实现代码
Apr 15 Javascript
JavaScript事件处理器中的event参数使用介绍
May 24 Javascript
Javascript 中创建自定义对象的方法汇总
Dec 04 Javascript
Javascript删除指定元素节点的方法
Jun 21 Javascript
AngularJS优雅的自定义指令
Jul 01 Javascript
JavaScript使用键盘输入控制实现数字验证功能
Aug 19 Javascript
js实现楼层导航功能
Feb 23 Javascript
微信小程序 获取session_key和openid的实例
Aug 17 Javascript
原生JS实现获取及修改CSS样式的方法
Sep 04 Javascript
微信小程序登录session的使用
Mar 17 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
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
JS 文件传参及处理技巧分析
2010/05/13 Javascript
javascript 伪数组实现方法
2010/10/11 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
python实用代码片段收集贴
2015/06/03 Python
python脚本内运行linux命令的方法
2015/07/02 Python
python运行时间的几种方法
2016/06/17 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
python正则-re的用法详解
2019/07/28 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
酒店中秋节促销方案
2014/01/30 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
联谊会主持词
2014/03/26 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
伊琍体标语
2014/06/25 职场文书
债务纠纷委托书
2014/08/30 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
材料员岗位职责
2015/02/10 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python