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 相关文章推荐
JS 建立对象的方法
Apr 21 Javascript
基于JQuery框架的AJAX实例代码
Nov 03 Javascript
实现前后端数据交互方法汇总
Apr 07 Javascript
jQuery Ajax使用实例
Apr 16 Javascript
AngularJS下对数组的对比分析
Aug 24 Javascript
AngularJs Forms详解及简单示例
Sep 01 Javascript
vue2滚动条加载更多数据实现代码
Jan 10 Javascript
微信小程序实现换肤功能
Mar 14 Javascript
ES6 系列之 WeakMap的使用示例
Aug 06 Javascript
JS使用数组实现的队列功能示例
Mar 04 Javascript
详解Node.js使用token进行认证的简单示例
May 25 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
Aug 04 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/03/25 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
PHP实现合并discuz用户
2015/08/05 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
javascript奇异的arguments分析
2010/10/20 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
详解webpack 多页面/入口支持&amp;公共组件单独打包
2017/06/29 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
python BeautifulSoup使用方法详解
2013/11/21 Python
Python字典简介以及用法详解
2016/11/15 Python
轻量级的Web框架Flask 中模块化应用的实现
2017/09/11 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
母婴店促销方案
2014/03/05 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
效能监察建议书
2014/05/19 职场文书
婚庆公司计划书
2014/09/15 职场文书
就业推荐表院系意见
2015/06/05 职场文书
人与自然的观后感
2015/06/18 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python