1.对象时不可迭代访问的。尝试使用for/of循环会throw TypeError
let o={x:1,y:2,z:3};
for(let element of o){
console.log(element);
}//throw typeError
2.可以使用Object.keys()方法实现对象迭代
let o={x:1,y:2,z:3};
let keys="";
for(let k of Object.keys(o)){
keys+=k;
}//keys="xyz"
Object.keys()会返回由对象属性构成的数组,数组可以迭代。
如果只关心对象的值可以用下面方式:
let sum=0;
for(let v of Object.value(o)){
sum+=v;
}//sum=6;
如果值和属性都关心则:
let pairs="";
for(let[k,v] of Object.entries(o)){
pairs+=k+v;
}//pairs="x1y2z3"
3.Es6以后字符串是可以迭代的
let frequency={};
for(let letter of "mississippi"){
if(frequency[letter]){
frequency[letter]++;
}else{
frequency[letter]=1;
}
}//结果{m:1,i:4,s:4,p:2}用于统计字符出现的频率。
4.Set集合,Map映射
let text="Na na na na na na na Batman!";
let wordSet=new Set(text.split(" "));
let unique=[];
for(let word of wordSet){
unique.push(word);
}//集合中的元素不重复,所以结果为unique=["Na","na","Batman!"]
Map的迭代是返回的键值对。
let m=new Map([1,"one"]);
for(let[key,value] of m){
key
value
}
}
}