JavaScript 之迭代方法
前言:关于 JS 中为数组定义的迭代方法,我最开始是在《JavaScript高级程序设计》中学习的,然后。。。我并没有看懂,后来翻阅各个大佬的博客,稍微理解了那么一丢丢。以下就是我的一点见解。
首先,我们需要知道数组中的迭代方法都有哪些,列举出来分别是:every、some、filter、map、forEach、reduce。
其中 every、some、filter、map、forEach 五种方法在传入时函数会接受三种参数,分别是 item(数组中项的值)、index(项的索引)、array(数组自身)。我在下面的案例中都只传入了两个值,原因是。。。用不到(其实是懒得写)
而 reduce 方法则会接受四个参数,分别是 prev(前一个项)、cur(当前项)、index(项的索引)、array(数组对象),函数中返回的任何值都会作为第一个参数传给下一项,函数的迭代是在数组的第二项开始的。
1.every ------- 查询数组中的每一项是否都满足条件
var num = [1,2,3,4,5];
var number = num.every(function(item,index){
return (item > 3); //判断传入的值是否全部都大于3
})
console.log(number); //false 有一个不满足即为false
2.some ------- 查询数组中的每一项哪些满足条件
var num = [1,2,3,4,5];
var number = num.some(function(item,index){
return (item > 3); //判断传入的值哪些项大于3
})
console.log(number); //true 满足一个即可为true
3.filter ------ 筛选符合条件的项,组成新数组
var num = [1,2,3,4,5];
var number = num.filter(function(item,index){
return (item > 3); //判断传入的值哪些项大于3
})
console.log(number); //[4,5]
4.map ------ 数组中的项通过计算,组成新数组
var num = [1,2,3,4,5];
var number = num.map(function(item,index){
return item * 3; //传入的数值都乘以3
})
console.log(number); //[3,6,9,12,15]
5.forEach ------ 传入数组中的每一项
var num = [1,2,3,4,5];
var number = num.forEach(function(item,index){
console.log(item); // 1 2 3 4 5
})
关于 forEach 我再多叨叨几句,这个方法在本质上与 for 循环没有什么区别。上面提到过,每个方法都会传入三个参数,那么我在输出时传入第一项,也就是输出数组中的每一项。如果传入第二项,则是循环迭代数组的 index 下标值,如果传入第三项,则是循环迭代整个 num 数组。
6.reduce ------ 数组的前项和后项进行累计值计算
var num = [1,2,3,4,5];
var number = num.reduce(function(prev,cur,index){
return prev + cur;
})
console.log(number); // 1+2+3+4+5 = 15 本质上就是数组中的项 累计运算的过程
JavaScript 之迭代方法的更多相关文章
- JavaScript数据迭代方法差别
js有很多总接待方法,ES6之后又新增了几个: 这里主要讨论数组迭代遍历的方法所以不会细讲for...in... ES5.ES6数组迭代方法有: forEach map filter some eve ...
- 松软科技web课堂:JavaScript 数组迭代方法
数组迭代方法对每个数组项进行操作,听着挺高深,其实,就是对数组对象一次性逐一进行一种操作的一种叫法.(文章来源:www.sysoft.net.cn,加v:15844800162深度交流) Array. ...
- JavaScript五中迭代方法小解
ECMAScript 为数组定义了五个迭代方法.每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响this的值.传入这些方法中的函数会接收三个参数:数组项的值.该 ...
- javaScript 数组迭代方法
map 方法 解释:map即映射,返回对每项操作后组成的新数组 let arr=[1,2,3,4,5,6,7,8]; let newArr=arr.map((item)=>{ if(item&g ...
- javascript——迭代方法
<script type="text/javascript"> //五个迭代方法 都接受两个参数:要在每一项上运行的函数 和 运行该函数的作用域(可选) //every ...
- Javascript数组系列三之迭代方法2
今天我们来继续 Javascript 数组系列的文章,上文 <Javascript数组系列二之迭代方法1> 我们说到一些数组的迭代方法,我们在开发项目实战的过程中熟练的使用可以大大提高我们 ...
- Javascript数组系列二之迭代方法1
我们在<Javascript数组系列一之栈与队列 >中介绍了一些数组的用法.比如:数组如何表现的和「栈」一样,用什么方法表现的和「队列」一样等等一些方法,因为 Javascript 中的数 ...
- 一张图看懂JavaScript中数组的迭代方法:forEach、map、filter、reduce、every、some
好吧,竟然不能单发一张图,不够200字啊不够200字! 在<JavaScript高级程序设计>中,分门别类介绍了非常多数组方法,其中迭代方法里面有6种,这6种方法在实际项目有着非常广泛的作 ...
- JavaScript中数组的迭代方法:forEach、map、filter、reduce、every、some、for in、for of
JavaScript中有非常多数组迭代方法,这里基本上吧所有的都介绍全了,我项目中比较喜欢的是forEach. 7.for in (for-in循环实际是为循环对象而设计的,for in也可以循环数组 ...
随机推荐
- 在Windows系统上以C++打印出当前活动用户的环境变量
在Windows系统上以C++打印出当前活动用户的环境变量,代码如下(QT环境): void getEnvironmentVariables() { DWORD sessionId = WTSGetA ...
- 图像滤镜艺术---Photoshop实现Instagram之Mayfair滤镜效果
原文:图像滤镜艺术---Photoshop实现Instagram之Mayfair滤镜效果 本文介绍一下如何使用Photoshop来实现Instagram中的Mayfair滤镜的效果. 以上就是这个滤镜 ...
- C# WinForm TreeView选择父节点子节点全选
//设置标志,防止死循环 bool check = false; public void TV_AfterCheck(object sender, TreeViewEventArgs e) { if ...
- wpf VisualBrush 的使用,可创建重复图像
VisualBrush 类(msdn) <Grid.Background> <VisualBrush TileMode="Tile" Viewport=" ...
- Android零基础入门第43节:ListView优化和列表首尾使用
原文:Android零基础入门第43节:ListView优化和列表首尾使用 前面连续几期都在学习ListView的各种使用方法,如果细心的同学可能会发现其运行效率是有待提高的,那么本期就来一起学习有哪 ...
- 使用VC2005编译真正的静态Qt程序 good
首先,你应该该知道什么叫静态引用编译.什么叫动态引用编译.我这里只是简单的提提,具体的可以google一下. 动态引用编译,是指相关的库,以dll的形式引用库.动态编译的Exe程序尺寸比较小,因为相关 ...
- Oracle 宣布 Java 7 生命周期终结
快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中. <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...
- VS2008 环境中完美搭建 Qt 4.7.4 静态编译的调试与发布(很不错,有六张插图说明,修改qmake.conf里的MD参数等)good
为什么要在VS2008中使用QT静态编译呢?很简单,因为VS2008编译器编译出来的文件比mingw编译的要几乎小一半. 好了现在我们来做些准备工作,VS2008自然要安装的,然后打上SP1的补丁.然 ...
- C# 中使用不安全代码(unsafe、指针)实践
命题 根据指定的字符集合(字典),按排列组合的规则(允许重复),生成指定长度的所有字符串.如下代码: class Program { static void Main(string[] args) { ...
- python的实用函数
>>> file=open('txt.txt','a') >>> print >> file,'hello,world' >>> fi ...