最近突然发现关于数组对象的键与值的获取不仅仅是for循环可以实现,我们可以用for…in循环与Object.keys获得数组与对象的键,用for…of循环与Object.values获取数组和对象的值;
var arr=['a','b','c'];
for (var key in arr){
console.log(key);//a,b,c
}
for (var value of arr){
console.log(key);//0,1,2
}
console.log(object.keys(arr));//["a","b","c"]
console.log(object.keys(arr));//["1","2","3"]]
字符串遍历:可通过for-of遍历字符串
for-in:遍历对象自身可继承可枚举属性
Object.keys():返回对象自身可枚举属性的键组成的数组
遍历字符串:for-in获取索引,for-of获取值(可识别32位UTF-16字符)
遍历数组:for-in获取索引,for-of获取值
遍历对象:for-in获取键,for-of需自行部署
遍历Set:for-of获取值 => for (const v of set)
遍历Map:for-of获取键值对 => for (const [k, v] of map)
遍历类数组:包含length的对象、Arguments对象、NodeList对象(无Iterator接口的类数组可用Array.from()转换)
计算生成数据结构:Array、Set、Map
keys():返回遍历器对象,遍历所有的键
values():返回遍历器对象,遍历所有的值
entries():返回遍历器对象,遍历所有的键值对
与for-in区别
有着同for-in一样的简洁语法,但没有for-in那些缺点、
不同于forEach(),它可与break、continue和return配合使用
提供遍历所有数据结构的统一操作接口