遍历种类
-
forEach
对数组的循环的函数,不会改变数组值 -
map
创建新数组,返回元素调用函数返回的结果 -
every
测试一个数组内所有的数组是否都能通过某个指定函数的测试,返回布尔值 -
for循环
常用的循环 -
while
循环 先判断后执行 -
do-while
循环,先执行后判断,至少执行一次 -
for-of
数组、set
、map
等都可以使用 -
for-in
主要用于对象遍历 - 遍历对象,获取对象属性
key
的数组,遍历,该数组,使用的方法主要有Object.keys()
,Object.getOwnPropertyNames
forEach
对数组的循环的函数,不会改变数组值
数组对象例子
var array1 = [{name:'张三丰',sex: '男'}];
array1.forEach(function(item) {
item['name'] = 'dkdkdk';
console.log(item);
});
console.log(array1)
输出:
> Object { name: "dkdkdk", sex: "男" }
> Array [Object { name: "dkdkdk", sex: "男" }]
普通数组例子
var array1 = [1,2,3];
array1.forEach((currentValue,index) => {
currentValue++
console.log(currentValue);
});
console.log(array1)
输出:
> 2
> 3
> 4
> Array [1, 2, 3]
map
创建新数组并返回调用函数的值
例子
var array1 = [1,2, 3, 4];
const map1 = array1.map(x => x * 2);
console.log(map1);
输出:
> Array [2, 4, 6, 8]
every
检查数组内的元素是否都满足某个函数的检验,返回布尔值
例子
var array1 = [1, 30, 39, 49, 10, 13];
let bl = array1.every((currentValue) => {
return currentValue > 40
})
console.log(bl)
输出:
> false
for
循环
将长度缓存起来,避免重复获取长度,数据量较大的时候优化效果比较明显
var arr = [1,2,3,4,5,6];
for ( var i = 0,len = arr.length; i <len; i++){
console.log(arr[i]);
}
while循环
类似普通for
循环,只是语句分散写开
let num = 1
while(num < 10) {
console.log(num)
num ++
}
do-while循环
类似普通for
循环,只是语句分散写开
let num = 1
do{
console.log(num)
num ++
}while(num < 10)
for-of循环
具有Symbol.iterator
属性,就可以使用for...of
遍历,返回的是值不是索引,可以响应break
,continue
,return
语句
var array1 = [1, 30, 39, 49];
for(let item of array1) {
console.log(item)
}
输出:
> 1
> 30
> 39
> 49
for-in循环
主要用于遍历对象for(key in object)
,key是字符串类型,能读取对象自身上面的成员属性,也会读出原型链遍历出的对象的原型属性。如果只使用当前对象本身的属性,使用hasOwnProperty
或getOwnPropertyNames()
判断是不是当前对象的属性
迭代的顺序是依赖于执行环境的,所以数组遍历不一定按次序访问元素。因此当迭代访问顺序很重要的数组时,最好用整数索引去进行for循环(或者使用 Array.prototype.forEach() 或 for...of 循环)
var array1 = [1, 30, 39, 49];
for(let item of array1) {
console.log(item)
}
输出:
> 1
> 30
> 39
> 49
遍历对象
除去for-in
之外,还可以以使用Object.keys()
,Object.getOwnPropertyNames()
获取对象的属性数组,然后遍历该属性数组,相关例子如下:
var obj = {'0':'a','1':'b','2':'c'};
Object.getOwnPropertyNames(obj).forEach(function(key){
console.log(key,obj[key]);
});
Object.keys(obj).forEach(function(key){
console.log(key,obj[key]);
});
网友评论