重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍了javascript中Array数组的迭代方法,实例分析了Array数组的迭代方法定义与使用技巧,需要的朋友可以参考下
创新互联主营富源网站建设的网络公司,主营网站建设方案,app软件定制开发,富源h5重庆小程序开发搭建,富源网站营销推广欢迎富源等地区企业咨询
本文实例讲述了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
num
=
[1,2,3,4,5,4,3,2,1];
num.map(function(item,
index,
array){
return
(item
*
2);
//[2,
4,
6,
8,
10,
8,
6,
4,
2]
});
//every()
some()
,查询数组中的某个项是否符合某个条件
every()必须传入的参数每一个都返回true,结果才为true;some()方法
//只要有一个为true,结果就为true
var
num
=
[1,2,3,4,5,4,3,2,1];
num.every(function(item,
index,
array){
return
(item
2);
//false
});
num.some(function(item,
index,
array){
return
(item
2);
//true
})
//forEach()
对数组的每一项传入参数,没有返回值
var
num
=
[1,2,3,4,5,4,3,2,1];
num.forEach(function(item,
index,
array){
return
item;
})
希望本文所述对大家的javascript程序设计有所帮助。
iterator(迭代)一般很少直接使用, 但是却是很常用很重要的功能.
例如 :
对象的扩展运算符(...)内部其实是调用了 Iterator 接口。
在es6 中统一了遍历的接口 Iterator,Iterator 接口的目的,就是为所有数据结构,提供了一种统一的访问机制,即for...of循环。
字符串也可以使用扩展运算符
rest运算符, 与扩展运算符是逆运算
扩展运算符:数组=分割序列
rest运算符:分割序列=数组
rest可以代替arguments变量
回到主题, 迭代
Symbol.iterator 为每一个对象定义了默认的迭代器。
当需要对一个对象进行迭代时(比如开始用于一个 for..of 循环中),它的 @@iterator 方法都会在不传参情况下被调用,返回的 迭代器 用于获取要迭代的值。
一些内置类型拥有默认的迭代器行为,其他类型(如 Object )则没有。下表中的内置类型拥有默认的 @@iterator 方法:
更多信息请参见 迭代协议 。
js中对象分为可迭代和不可迭代 如果是可迭代哪它就会有一个[Symbol.iterator] 函数
这个函数就是对象的迭代器函数,如用for of 如果遍历的对象没有这个迭代方法那么就会报错.
for of 传入的是可迭代对象,但是如何吧一个不可迭代的对象变为可迭代的对象呢!很简单就是自己写一个[Symbol.iterator]函数。
你以为迭代就这么简单的结束了吗?现在再讲一个新东西 yield
. yield是ES6的新关键字,使生成器函数执行暂停,yield关键字后面的表达式的值返回给生成器的调用者。它可以被认为是一个基于生成器的版本的return关键字。
. yield关键字实际返回一个IteratorResult(迭代器)对象,它有两个属性,value和done,分别代表返回值和是否完成。
. yield无法单独工作,需要配合generator(生成器)的其他函数,如next,懒汉式操作,展现强大的主动控制特性。
用 yield 自定义一个迭代器
function* () {} 这种函数名字叫 generator函数, 生成器函数, 下一篇再重点讲这个哈.
数组有length属性(取长度),toString()方法(转换为字符串),join()方法(用指定字符连接数组元素)
其他还有:
•栈方法 push( ) pop( )
•队列方法 shift( ) unshift( )
•排序方法 reverse( ) sort( )
•操作方法 concat( ) slice( ) splice( )
•位置方法 indexOf( ) lastIndexOf( )
•迭代方法 every( ) filter( ) forEach( ) map( ) some( )
•归并方法 reduce() reduceRight( )
//jQuery 里面有一个方法 ezch 可以对对象进行遍历
var obj = {"id" : 1 ,"name" : "zs"},
$.each(obj,function(index,value){
console.debug(index,value);
})
//或者使用这个
for(var p in obj){
console.debug(obj[p])
}
迭代:
1、自己调用自己的方法,或者称递归。这个应该不用多说。
2、还有一种解释:很多程序有迭代器。这是一种用于“遍历”数组的工具对象。一般遍历一个数组都是使用循环变量从0到最后一个,或者使用链表遍历量表中内容。使用迭代器可以不关注数组的具体实现方式,遍历数组中所有成员。
遍历:
对数据结构中每一个成员都进行一次访问的操作就是遍历。比如遍历列表。最为常见得问题是遍历树,遍历树的常见方法有:先序/中序/后序,或者按照另一个纬度划分有,广度遍历和深度遍历。相关具体算法可以查找其他资料。