JavaScript数组迭代方法
最近工作中经常涉及到数据的处理,数组尤其常见,经常需要对其进行遍历、转换操作,网上的文章零零散散,不得已自己又找出红宝书来翻出来看,顺便记一笔,便于以后查询。
数组常用的迭代方法
ECMAScript5为数组定义了5个迭代方法。每个方法都接受两个参数:要在每一项上运行的函数fn和(可选的)运行该函数的作用域对象——影响 `this` 的值。
传入这些方法中的函数(fn)会接收3个参数:item 、index 、array; 如:
array.forEach(function(item,index,array){ //do your staff here; },this)
根据使用方法的不同,这个函数执行后的返回值,可能会/不会影响方法中的返回值。
这5个迭代方法作用及返回值概览如下:
ECMAScript5 Array元素迭代方法
方法名 | 方法作用 | 返回值 |
every() | 针对数组中每一项元素运行指定函数 | Boolean:若每一项都返回true,返回true; |
filter() | 针对数组中每一项元素运行指定函数, | Array: 返回函数运行返回true的元素组成的新数组 |
forEach() | 针对数组中每一项元素运行指定函数 | null: 无返回值 |
map() | 针对数组中每一项元素运行指定函数 | Array: 返回函数运行后,得到到新新元素组成的新数组 |
some() | 针对数组中每一项元素运行指定函数 | Boolean: 若有任意一项执行函数后返回true, 则返回true |
简单来说:
every() 、some() 方法适合用于对数组元素进行条件判断;
filter() 、map() 方法适合用于对数组进行条件筛选/再处理;
forEach() 方法对不对数组本身做操作,仅仅对数组元素的二次应用;
下面介绍下各个方法的使用栗子:
先来假设一个场景,你拿到了公司的本月工资清单,假设你的工资为9000;公司员工工资组成的数组为salaries=[8500,12000,9900,9000],
a. 想知道 你的工资是不是最低的;
b.想知道 有没有人和你工资一样多;
c.想知道 是不是所有人待遇都一样;
d.想把大家的工资都换成K为单位的数据
var a,b,c; var your=9000; var salaries=[8500,12000,9900,9000]; a=slaries.some(function(item,index,array){ return item<9000 }); console.log(a);//true;恭喜你,还有人比你工资更低 b=salaries.filter(function(item,index,array){ return item== your; }) console.log(b);//[9000] 呵呵,有人跟你待遇一样 c=salaries.every(function(item,index,array){ return item==your; }); console.log(c);//false .不是所有人都和你一样待遇哦 d=salaries.map(function(item,index,array){ return item/1000 }); console.log(d);//[8.5,12,9.9,9]
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!
相关推荐
-
JS的数组迭代方法
本文实例讲述了JS的数组迭代方法.分享给大家供大家参考.具体实现方法如下: <!doctype html> <html> <head lang="zh"> <meta charset="utf-8"> <title>js数组迭代</title> <meta name="renderer" content="webkit"> <script
-
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
继承是OO语言中的一个最为人津津乐道的概念. 许多OO语言都支持两种继承方式:接口继承和实现继承. 接口继承只继承方法签名,而实现继承则继承实际的方法. 如其所述,由于函数没有签名,在ECMAScript中无法实现接口继承. ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的. 1.使用对象字面量定义对象 var person={}; 使用这种方式创建对象时,实际上不会调用Object构造函数. 开发人员更喜欢对象字面量的语法. 2.有时候需要传递大量可选参数的情形时,一
-
js数组的五种迭代方法及两种归并方法(推荐)
js数组的五种迭代方法及两种归并方法(推荐) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht
-
javaScript数组迭代方法详解
本文为大家介绍了javaScript数组迭代方法,供大家参考,具体内容如下 每个方法都接收两个参数:要在每一项上运行的函数 和 (可选的)运行该函数的作用域对象. 传入这些方法中的函数会接收三个参数:数组项的值,该项在数组中的位置,数组对象本身. forEach() 对数组中的每一项运行 给定函数.该方法没有返回值. every() 对数组中的每一项运行 给定函数,如果数组的每一项都返回true,则返回true. some() 对数组中的每一项运行 给定函数,如果数组的任意一项返回tr
-
JavaScript数组迭代器实例分析
本文实例讲述了JavaScript数组迭代器用法.分享给大家供大家参考.具体如下: 这里注意:如果数组中有0.false."".null.NaN迭代器将会停止 function createIterator(x) { var i = 0; return function(){ return x[i++]; }; } var iterator=createIterator(['a','b','c','d','e','f','g']); var current; while(current
-
javascript中Array数组的迭代方法实例分析
本文实例讲述了javascript迭代的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: //filter() 利用指定的函数确定是否返回数组中包涵的某一项 var num = [1,2,3,4,5,6,12]; num.filter(function(item, index, array){ return (item > 2); //[3, 4, 5, 6, 12] }); //map() 返回一个数组,数组中每一项都是在原始数组中的对应项上运行传入参数的结果 var nu
-
js 数组实现一个类似ruby的迭代器
分为如下几节: ·基本实现 ·在迭代中引用原来的对象,或者直接改变数组的值而不是返回一个新数组 ·向迭代传入无限多的参数 ·基本实现 今天突然发现js的数组处理起来真是麻烦,代码一些就是一大堆,相比起ruby的迭代器来真是逊色不少,主要是要写的代码太多了,也许是js有特殊的处理数组的方式,真是我不知道而已,但是我真的想自己给js实现一个类似ruby的迭代器的东东,而且实现起来也不难,那就开始动手吧. 真的应该庆幸js是动态语言啊,如果是静态语言,实现起来很不方便(别说要我重新定义一个继承自arr
-
详谈JS中数组的迭代方法和归并方法
数组的迭代方法 ES5中为数组定义了5个迭代方法.每个方法都要接收两个参数:要在每一项上面运行的函数和(可选的)运行该函数的作用域对象---影响this的值. 传入方法中的函数会介绍三个参数:1.数组项的值 2. 该项在数组的中位值 3. 数组对象本身: every()和some()方法 every():对数组中的每一项运行给定函数,如果每一项都返回true,则返回true,否则false: some():对数组中的每一项运行给定函数,如果至少有一项返回true,则返回true,否则false:
-
JavaScript数组的5种迭代方法
ES5为数组定义了5个迭代方法.每种方法都接收两个参数.要在每一项上运行的函数和(可选的)运行该函数的作用域对象--影响this的值.//其中(可选的)这个参数暂时未遇到过. 其中,函数都接收三个参数(数组中的每一项.每一项的索引值.数组对象本身). 下面是5中方法的介绍: every() : 对数组中的每一项执行函数,如果每一项都返回 true ,则该方法返回 true. some(): 对数组中的每一项执行函数,只要有一项返回了 true ,则该方法返回 true. filter()
-
JavaScript数组迭代方法
最近工作中经常涉及到数据的处理,数组尤其常见,经常需要对其进行遍历.转换操作,网上的文章零零散散,不得已自己又找出红宝书来翻出来看,顺便记一笔,便于以后查询. 数组常用的迭代方法 ECMAScript5为数组定义了5个迭代方法.每个方法都接受两个参数:要在每一项上运行的函数fn和(可选的)运行该函数的作用域对象--影响 `this` 的值. 传入这些方法中的函数(fn)会接收3个参数:item .index .array; 如: array.forEach(function(item,index
-
JavaScript数组reduce()方法的语法与实例解析
前言 reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组. Javascript数组方法中,相比map.filter.forEach等常用的迭代方法,reduce常常被我们所忽略,今天一起来探究一下reduce在我们实战开发当中,能有哪
-
27个JavaScript数组常见方法汇总与实例说明
1. push() 概括:数组末位增加 参数:需要增加的数据 返回值:数组更新后的长度 let arr = [1,2,3] arr.push(1) // 返回新增后的数组长度 4 arr.push() // 不传参数默认不新增 4 arr.push(1,2,3) // 新增多条数据时,返回新增完成后的数组长度 7 2. pop() 概括:数组末位删除 参数:无 返回值:删除的数据 let arr = [3] arr.pop() // 返回已删除的数据 3 arr.pop() // 当数组数据为空
-
javascript数组去重方法分析
本文实例讲述了javascript数组去重方法.分享给大家供大家参考,具体如下: 方法一. 思路:创建一个新的空数组,循环遍历旧数组,用indexOf()方法,可以取得元素在数组中的位置,如果值为-1表示不存在.那么新数组用indexOf去获取老数组的每一个元素,如果值为-1表示不存在,就把他push到新数组里,最后输出新数组即去重后的数组 var arr=[24,56,74,89,24,56,78,09,24]; var new_arr=[]; for(var i=0;i<arr.length
-
javascript数组去重方法汇总
javascript数组去重方法汇总 Array.prototype.unique1 = function () { var n = []; //一个新的临时数组 for (var i = 0; i < this.length; i++) //遍历当前数组 { //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(this[i]) == -1) n.push(this[i]); } return n; }; Array.pro
-
javascript数组去重方法总结(推荐)
第一种--对象键值去重 Array.prototype.unique1 = function () { var r = {}, temp = [] for (var i = 0; i < this.length; i++) { if (!r[this[i]]) { r[this[i]] = 1 temp.push(this[i]) } } return temp } 第二种--splice删除去重 Array.prototype.unique2 = function () { for (var
-
JavaScript数组push方法使用注意事项
js 数组的push方法,想必大家都知道是向数组末尾添加元素,但是有一个很关键的点需注意: 引自 MDN 返回值 当调用该方法时,新的 length 属性值将被返回. var sports = ["soccer", "baseball"]; var total = sports.push("football", "swimming"); console.log(sports); // ["soccer",
-
JavaScript数组reduce()方法
将某个值减去数组中的每个元素: var items = [5, 10, 15]; var reducer = function minus(minusSum, item) { return minusSum - item; } var total = items.reduce(reducer, 61); console.log(total); // 31 上例中初始值为number类型,所以返回的结果也是number类型的,如果我们想返回object类型的值,也可以传入object类型的
随机推荐
- angular实现spa单页面应用实例
- asp.net 分页潜谈
- Ruby on Rails基础之新建项目
- Centos7下Redis3.2.8最新版本安装教程
- jQuery截取指定长度字符串的实现原理及代码
- Apache和Tomcat服务器间的区别、联系、整合详细介绍
- 按键测试,支持像 Ctrl+Alt+Shift+T 的组合键
- 详解nginx同一端口监听多个域名和同时监听http与https
- CSS渐变文本效果的两种方法比较
- 一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)详细教程
- 深入探讨:oracle中row_number() over()分析函数用法
- jquery选择器需要注意的问题
- Spring Boot 项目发布到 Tomcat 服务器的操作步骤
- Spring Boot全局异常处理解析
- 基于Java回顾之多线程同步的使用详解
- 一个从别的网站抓取信息的例子(域名查询)
- Android插件化-RePlugin项目集成与使用详解
- python实现本地批量ping多个IP的方法示例
- MyBatis批量插入数据过程解析
- js实现指定时间倒计时效果