for-each、for-in和for-of的区别
1、forEach()方法
用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。
array.forEach(function(currentValue, index, arr), thisValue)
参数1:function(currentValue, index, arr) 必需。 数组中每个元素需要调用的函数。
参数2: thisValue 可选。传递给函数的值一般用 "this" 值。
如果这个参数为空, "undefined" 会传递给 "this" 值 示例:
<button onclick="numbers.forEach(myFunction)">点我</button> <p>数组元素总和:<span id="demo"></span></p> <script>
var sum = 0;
var numbers = [65, 44, 12, 4]; function myFunction(item) {
sum += item;
demo.innerHTML = sum;
}
</script>
常用写法:
objArr.forEach(
function (value) { console.log(value); }
);
注意:foreach
方法没办法使用 break
语句跳出循环,或者使用return
从函数体内返回
2、for-in
for(var index in objArr){
console.log(objArr[index])
}
for-in会获取到数组的下标、会获取到对象的key值
所以for in更适合遍历对象,不要使用for in遍历数组
var arr=[1,2,3,4,5]
var obj={
key1:'value1',
key2:'value2',
key3:'value3',
key4:'value4',
}
//console.log(arr)
//console.log(obj) for(var i in arr){
console.log(i)
}
for(var i in obj){
console.log(i)
} for(var i of arr){
console.log(i)
}
for(var i of obj){
console.log(i)
}
3、for-of
for(let value of objArr){
console.log(value)
}
for-of会获取到数组的每一个的值,更适合于数组对象,不要用于对象
可以使用 break
, continue
和 return
也支持字符串
的遍历
var arr=[1,2,3,4,5]
var obj={
key1:'value1',
key2:'value2',
key3:'value3',
key4:'value4',
}
var arObj=[
{k11:'value11'},
{k22:'value22',k21:'value21'},
{k33:'value33',k32:'value32',k31:'value31'},
]
//console.log(arr)
//console.log(obj) for(var i in arr){
console.log(i)
}
for(var i in obj){
console.log(i)
} for(var i of arr){
console.log(i)
}
// for(var i of obj){
// console.log(i)
// }
for(var i of arObj){
console.log(i)
}