近来总结了一下四类循环
for循环**
//数组遍历
var arr = [1,2,3,4,4]
//普通for循环
for(var i = 0; i < arr.length; i++){
console.log(arr[i]);
}
//结果1,2,3,4,4
var obj = {
x0: 100,
x1: 200,
x2: 300
}
for(let i = 0; i < 3; i++){
console.log(obj["x"+i]);
}
//结果100,200,300
//for循环不适合用在对象上,限制太大
**for in 循环**
for in在Array和Object中都可以使用。
注意:会遍历在对象中包含原型上的属性。
//数组遍历
var arr = [1,2,3,4,4];
Array.prototype.x = "inherited";
for(var i in arr){
console.log(arr[i]); //1,2,3,4,4,inherited
// if(arr.hasOwnProperty(i)){
// console.log(arr[i]);
// } //1,2,3,4,4
}
//对象遍历
var obj = {
x: 1,
y: 2,
z: 3
}
obj.__proto__.a = 400;
for(var i in obj){
//console.log(obj[i]); //1,2,3,400
if(obj.hasOwnProperty(i)){
console.log(obj[i]);
}
//1,2,3
}
for of循环
for of在Array、Object、Set、Map中都可以使用。
//数组遍历
// var arr = [1,2,3,4,4];
// for(let value of arr){
// console.log(value);//1,2,3,4,4
// }
// for(let i of arr.keys()){
// console.log(i); //0,1,2,3,4
// }
// for(let value of arry.values()){
// console.log(value);
// } //报错
// for(let [index,value] of arr.entries()){
// console.log(index,value);
// // 0 1
// // 1 2
// // 2 3
// // 3 4
// // 4 4
// }
//对象遍历
// var obj = {
// x: 1,
// y: 2,
// z: 3
// }
// obj.__proto__.a = 100;
// for(let [key,value] of Object.entries(obj)){
// console.log(key,value);
// // x 1
// // y 2
// // z 3
// //并没有遍历出原型链上的a
// }
//Set 的循环
//Set 结构没有键名,只有键值(或者说键名和键值是同一个值)
// var arr = [1,2,3,4,4];
// let list = new Set(arr);
// for(let key of list.keys()){
// console.log(key); //1 2 3 4
// }
// for(let value of list.values()){
// console.log(value) //1 2 3 4
// }
// for(let [key,value] of list.entries()){
// console.log(key,value); //1 1 2 2 3 3 4 4
// }
// //map的 循环
// let map = new Map();
// map.set("a",123).set("b",234);
// // console.log(map);
// for(let key of map.keys()){
// console.log(key); //a b
// }
// for(let value of map.values()){
// console.log(value); //123 234
// }
// for (let [key,value] of map.entries()){
// console.log(key,value);//a 123 b 234
// }
// forEach循环在Array、Set、Map中都可以使用。
var arr = [11,22,33,44];
// arr.forEach((item,index) => {
// console.log(item,index); //11 0 22 1 33 2 44 3
// })
// let list = new Set(arr);
// list.forEach((item,index) => {
// console.log(item,index);//11 11 22 22 33 33 44 44
// })
// let map = new Map();
// map.set("a",123).set("b",234);
// map.forEach((item,index) => {
// console.log(item,index); //123 "a" 234 "b"
// })
如果出现了错误,欢迎指正