ES6 for in与for of 的使用方法及其区别

Stella981
• 阅读 738

   // for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。

 let arr = [1,2,3,4,5,6,7]

    for(let index of arr){

     //   console.log(index)//1 2 3 4 5 6 7

    }

    for(let index in arr){

       // console.log(index)//0 1 2 3 4 5 6

        //console.log(arr)//1 2 3 4 5 6 7

        //console.log(arr[index])

    }

//遍历对象 通常用for in来遍历对象的键名

    let obj = {

        a:1,

        b:2,

        c:3

    }

    for(let key in obj){

        console.log(key)//a b c 

        //console.log(obj[key])//1 2 3

    }

forEach

  1. 三个参数,第一个value, 第二个 index, 第三个数组体。
  2. 适用于 数组,set,map,不适应于 字符串,Object。
  3. 无法修改和删除集合数据,效率和for循环相同,不用关心集合下标的返回。
  4. 不能终止循环,break,continue不能使用。
    栗子:

    let arr = [1, "ding", null, 5, true, undefined];

    arr.forEach(function (value, index, a) {

        console.log("value:", value, "index:", index, "a:", a);

    })

for in

  1. 索引为字符串
  2. 多用于遍历对象,json,数组,无顺序,增加了转换过程所以开销比较大
  3. 可扩展属性也会遍历
  4. 支持break, continue
    栗子:

 for (let item in obj) {

        console.log(item, ":", obj[item]);

        if (item == "age") delete obj[item]; //删除属性成功

    }

    console.log("obj:", obj);

  1. 是目前遍历数组最好的方法,可以用在set,map,类数组,字符串上,但是不支持原生的Object遍历。
  2. 支持break, continue
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Symbol卢 Symbol卢
3年前
js数组的遍历
js中数组的遍历1\.Map()方法Map映射的意思,可以看做是一个映射函数,所谓的映射。一个萝卜一个坑,一一对应的关系;语法:constarrArray();arr.map((item,index,arr)//函数体return;);//参数1:数组中的每一项(必选)//参数2:索引(可选)//参数3:当前遍历的数组本身(可选)//注
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Jacquelyn38 Jacquelyn38
3年前
这些JS工具函数够你用到2020年底了
前言活不多说,自己平时搜集的干货函数奉上。干货函数找出数字在数组中下一个相邻的元素let i  "";let rr  ;const name  (n, arr1)    let num  Number(n);    for (let i  0; i < arr1.length; i)         const elemen
Wesley13 Wesley13
3年前
Java开发者容易犯的十个错误
!(https://oscimg.oschina.net/oscnet/c9f00cc918684fbe8a865119d104090b.gif)Top1.数组转换为数组列表将数组转换为数组列表,开发者经常会这样做:\java\List<StringlistArrays.asList(arr);Arr
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
ES6编程风格
1、块级作用域使用let和const2、解构赋值letarr\1,2,3,4,5,6,7,8,9\;let\a,b,c\arr;letobj{foo:'aaa',bar:'bbb'};let{bar,foo}obj;//bar等于'bbb',foo等于'aaa'(
Wesley13 Wesley13
3年前
5种方式实现数组扁平化
数组扁平化概念数组扁平化是指将一个多维数组变为一维数组1,2,3,4,51,2,3,4,5实现1\.reduce遍历数组每一项,若值为数组则递归遍历,否则concat。functionflatten(arr){