javascript中常用的遍历函数

1. for循环,需要知道数组的长度,才能遍历

let arr =['2','test',true,'HelloWorld'];
for (let i = 0; i < arr.length; i++) {
  console.log(arr[i]);
}

在这里插入图片描述

2. forEach() 方法对数组的每个元素执行一次给定的函数。返回值undefined, 可以不用知道数组长度

let arr =['2','小明',true,'HelloWorld'];
arr.forEach((i,index)=>{
	i='hi,'+i;
	console.log(i);
})

在这里插入图片描述

3. map() 方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。原数组不变 不对空数组进行检测

let arr =['2','小明',true,'HelloWorld'];
let newstate=arr.map(function(index) {
     index="map的"+index;
     console.log(index)
     return index;
 })
console.log("newstate", newstate);

在这里插入图片描述

4.filter函数, 过滤通过条件的元素组成一个新数组, 原数组不变

let arr =['2',3,'小明',true,'HelloWorld'];
var newstate=arr.filter(function(index) {
	return typeof index==='number';
})
console.log(arr,newstate)

这里写图片描述

5. some() 方法测试数组中是否至少有 1 个元素通过了被提供的函数测试。返回是一个 Boolean 类型的值。

let arr =['2',3,'小明',true,'HelloWorld'];
var newstate=arr.some(function(index) {
    return typeof index==='number';
})
console.log(arr,newstate);

这里写图片描述

6. every() 方法测试一个数组内的所有元素是否都能通过指定函数的测试。返回一个Boolean值。

let arr =['2',3,'小明',true,'HelloWorld'];
var newstate=arr.every(function(index) {
	return typeof index==='number';
})
console.log(arr,newstate);

这里写图片描述

7. 除了遍历数组之外,还有遍历对象,常用方法for… in

let obj ={a:'2',b:3,c:true};
for (var i in obj) {
 console.log(obj[i],i)
}
console.log(obj);

这里写图片描述

in 不仅可以用来 遍历对象,还可以用来遍历数组, 不过 i 对应与数组的 key值

这里写图片描述

8. for…of循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。

const arr = ['red', 'green', 'blue'];
for(let v of arr) {
  console.log(v); // red green blue
}
const obj = {};
obj[Symbol.iterator] = arr[Symbol.iterator].bind(arr);
for(let v of obj) {
  console.log(v); // red green blue
}

在这里插入图片描述

9. 原有的for…in循环,只能获得对象的键名,不能直接获取键值。ES6 提供for…of循环,允许遍历获得键值。

for (let index of ['a', 'b'].keys()) {
  console.log(index);
}
// 0
// 1

for (let elem of ['a', 'b'].values()) {
  console.log(elem);
}
// 'a'
// 'b'

for (let [index, elem] of ['a', 'b'].entries()) {
  console.log(index, elem);
}
// 0 "a"
// 1 "b"

在这里插入图片描述

10. 如果要通过for…of循环,获取数组的索引,可以借助数组实例的entries方法和keys方法

在这里插入图片描述

言而简之:

1、map速度比forEach快
2、map():返回一个新的Array,不对原数组产生影响,每个元素为调用function的结果。
3、map因为返回数组所以可以链式操作,forEach不能,map和forEach推荐用.map()
4、forEach不会产生新数组,没有返回值,只是针对每个元素调用function

5、map()要比.forEach()执行速度更快。
6、filter():返回一个符合func条件的元素数组
7、every():返回一个boolean,判断每个元素是否符合func条件
8、some():返回一个boolean,判断是否有元素是否符合func条件

for…of循环可以使用的范围广包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。推荐

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值