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 相关文章推荐
鼠标事件延时切换插件
Mar 12 Javascript
js判断页面中是否有指定控件的简单实例
Mar 04 Javascript
jquery取子节点及当前节点属性值的方法
Sep 09 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
Apr 24 Javascript
使用AngularJS对路由进行安全性处理的方法
Jun 18 Javascript
不用一句js代码初始化组件
Jan 27 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
Oct 28 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
Dec 02 Javascript
实例解析Array和String方法
Dec 14 Javascript
详细分析单线程JS执行问题
Nov 22 Javascript
bootstrap模态框关闭后清除模态框的数据方法
Aug 10 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
May 27 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 文件上传功能实现代码
2009/06/24 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
2018/01/10 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
台湾专柜女包:KINAZ
2019/12/26 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
优秀员工自荐信范文
2013/10/05 职场文书
《都江堰》教学反思
2014/02/07 职场文书
中文教师求职信
2014/02/22 职场文书
公司联欢会策划方案
2014/05/19 职场文书
食堂标语大全
2014/06/11 职场文书
奶茶店创业计划书
2014/08/14 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
单位委托函范文
2015/01/29 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
深入浅析React中diff算法
2021/05/19 Javascript
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python