其他分享
首页 > 其他分享> > 【js】forEach,for...in,for...of 区别

【js】forEach,for...in,for...of 区别

作者:互联网

区别

for in循环出的是key,for of循环出的是value(for of循环时没有下标

 

demo:

一、for…in

1.作用:

for...in 语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作),其所遍历的为对象的属性名(键),而非属性值。

2.语法:

for (variable index in object){
    //...
}//字符串

3.实例:

//字符串
var str="Hello"
for (let i in str){
    console.log(i)
}
// 0 1 2 3 4

//数组
var arr=["a","b","c"]
for (let i in arr){
    console.log(i)
}
// 0 1 2

//普通对象
var obj={a:1,b:2,c:3}
for (let i in obj){
    console.log(i)
}
// a b c

 

 

二、for…of

1.作用:

2.语法:

for (variable element of iterable){    
    //...
}

3.实例:

//字符串String
var str="Hello";
for (let e of str){
    console.log(e)
}
// H e l l o

//数组Array
var arr=["a","b","c"];
for (let e of arr){
    console.log(e)
}
// a b c

//集合Set
var set=new Set([1,2,3,3,4]);//Set(4) {1, 2, 3, 4}
for (let e of set){
    console.log(e)
}
// 1 2 3 4

//字典Map
var map=new Map([["a",1],["b",2],["c",3]]);
for (let e of map){
    console.log(e[0]+"=>"+e[1])
}
// a=>1 b=>2 c=>3

//arguments对象
function f(){
    for (let e of arguments){
        console.log(e)
    }
}
f(1,2,3,4,5)
// 1 2 3 4 5

//DOM NodeList 对象
var parent = document.getElementById('parent');
var child_nodes = parent.childNodes;
for (let e of child_nodes){
    console.log(e)
}
//输出parent节点的所有子节点

 

 

三、forEach

1.作用:

forEach作用于数组对象,用于遍历数组对象的每一个元素,并对每一个元素执行回调(callback)函数。

2.语法:

ArrayObject.forEach(callback(currentValue, index, arr), thisValue))

3.实例:

//forEach实例
var obj={a:1};
var arr=[1,2,3];
arr.forEach(function(currentValue,index,arr){
    console.log(currentValue+this.a);
    console.log(index);
    console.log(arr);
},obj)
//2 0 [1,2,3]
//3 1 [1,2,3]
//4 2 [1,2,3]

见图

 

 

四、这几个循环中使用break、continue以及return

1、forEach中不可使用continue,break,

var  arr2 = [1,2,3,5,6];
arr2.forEach(item=>{
    if(item > 4){
        return;
    }
    console.log(item);
})//1 2 3

arr2.forEach(item=>{
    if(item > 4){
        break;
    }
    console.log(item);
})// 1 2 3

for(let i of arr2){
    if(i > 4){
        break
    }
    console.log(i);
}// 1 2 3


for(let i in arr2){
    if(i > 4){
        break
    }
    console.log(i);
}//报错

见图:

 

2、for of 中使用break

 

 

for in 中哪个都不可使用,虽然continue,break没有语法错误,但是不起作用

 

 

 

 相关资料:

 

搜索

复制

<iframe height="240" width="320"></iframe>

标签:...,遍历,console,log,js,let,forEach,var
来源: https://www.cnblogs.com/websmile/p/16573265.html