javascript-----------for/of

一、for/of--------数组

1. 对象(默认)是不可迭代的,运行时尝试对常规对象使用for/of会抛出TypeError。
let o = {x:1,y:2,z:3};
for(let element of o){
    console.log(element);
}
2. 想迭代对象的属性,可以使用for/in循环或者基于Object.keys()方法的结果使用for/of
let o = {x:1,y:2,z:3};
let keys = "";
for(let k of Object.keys(o)){
    keys +=k;
}
//控制台输入 keys   出现“xyz”

3.想迭代每个键对应的值,可以使用基于Object.values()方法的结果使用for/of

let o = {x:1,y:2,z:3};
let sum = 0;
for(let v of Object.values(o)){
    sum += v;
}
//在控制台输入sum  出现6

4.既想要对象属性的键,也想要属性的值,可以基于Object.entries()和解构赋值来使用for/of

let o = {x:1,y:2,z:3};
let pairs = "";
for(let[k,v] of Object.entries(o)){
    pairs += k + v;
}
//在控制台输入pairs 出现x1y2z3

二、for/of--------字符串

字符串逐个字符迭代:

let frequency = {};
for(let letter of "mississippi"){
    if(frequency[letter]){
        frequency[letter]++;
    }else{
        frequency[letter] = 1;
    }
}
//在控制台输入frequency 出现{m:1,i:4,s:4,p:2}

三、for/of--------Set和Map

ES6内置的Set(集合)和Map(映射)类是可迭代的。
 
1.for/of迭代Set时,循环体对集合中的每个元素都会运行一次。
例如,打印出一个文本字符串中的唯一单词
let text = "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!"]

2.Map对象的迭代器并不迭代Map键或Map值,而是迭代键/值对。

每次迭代,迭代器都会返回一个数组,第一个元素是键,第二个元素是对应的值。
let m = new Map([[1,"one"]]);
for(let [key,value] of m){
    key// 1
    value //"one"
}

四、for/of--------异步迭代

ES2018新增了一种新迭代器,称为异步迭代器,同时新增了一种for/of循环,即使用异步迭代器的for/await循环。
async function printStream(stream){
    for await (let chunk of stream){
        console.log(chunk);
    }
}

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值