先申明3种数值:数组、字符串、对象
var array = [4,5,6,7];
var string = 'gaoliang';
var object = {
name:'gl',
age:20,
sayName:function() {
console.log(this.name);
}
};
for in
数组
for(let i in array) {
console.log(i); // 0 1 2 3
}
字符串
for(let i in string) {
console.log(i); // 0 1 2 3 4 5 6 7
}
对象
for(let i in object) {
console.log(i); // name age sayName
}
总结:for in 循环遍历数组、字符串时,i 对应的是每一项的索引值,返回的是分别每一个索引值序列。 遍历对象时,i 对应的是对象的属性
for of
数组
for(let v of array) {
console.log(v); // 4 5 6 7
}
字符串
for(let v of string) {
console.log(v); // g a o l i a n g
}
对象
for(let v of object) {
console.log(v); // 报错:object is not iterable
}
总结:for of 循环中,遍历的是数组或字符串时,v 对应的是 每一项的值,返回的是每一个值的序列;对象不能用for of 遍历
keys()
数组
for(let i of array.keys()) {
console.log(i); // 0 1 2 3
}
对象
console.log(Object.keys(object)); // ['name','age','sayName'];
总结:
- 数组的keys()方法返回的是每一项索引值组成的序列
- 对象的keys()方法返回的是由属性组成的数组
- 字符串没有keys()方法
values()
数组
for(let i of array.values()) {
console.log(i); // 4 5 6 7
}
对象
console.log(Object.values(object)); // ['gl',20,f]
总结:
- 数组的values()方法返回的是每一项值组成的序列
- 对象的values()方法返回的是由属性值构成的数组
- 字符串没有values() 方法
entries()
数组
for(let [index,value] of array.entries()) {
console.log(index,value); // 0 4 1 5 2 6 3 7
}
对象
console.log(Object.entries(object)); // ['name','gl'] ['age',20] ['sayName',f]
总结:
- 数组的entries()方法返回的是由每一项索引值和数组值组成的键值对
- 对象的entries()方法返回的是由每一项属性和属性值组成的数组
网友评论