javascript循环

作者: rithe | 来源:发表于2018-09-10 17:42 被阅读23次

——这篇文章主要介绍javascript中几大循环的区别

最原始的js循环

es5出现以前,我们要遍历一个数组时,是这样写的

let arr = [{a: 1}, {a: 2}, {a: 5}]
for (let i = 0; i < arr.length; i++) {
  console.log(arr[index])
}

es5的循环

自从es5诞生以后,多了两个循环,forEach和for in,接下来分别介绍这两个循环

1. forEach

let arr = [{a: 1}, {a: 2}, {a: 5}]
arr.forEach((item, index, arr) => {
   console.log(item, index, arr)
   if (item.a === 2) {
    console.log(‘中断’)
    return
  }
  console.log(‘测试中断’)
})

forEach的写法比原始的for循环简单了很多,我们也不需要定义一个变量去做循环。使用forEach不能用 break和continue中断循环,使用return也只能终止本次循环,不能中断整个循环语句。

2. for in

用for in 来遍历对象

var obj = {a: 1, b: 5, c: 7}
for (let key in obj) {
  console.log(`obj.${key} = ${obj[key]}`)
}

for in除了可以遍历对象,也可以用来遍历数组

let arr = [{a: 1}, {a: 2}, {a: 5}]
for (let i in arr) {
  console.log(arr[i])
}

for in 写法比原始的for循环简单了写,也弥补了forEach的缺陷。但是for in 一般是用来遍历对象,不推荐用来遍历数组。

for in 遍历数组弊端
  1. for (let index in arr) 中index的类型不是number,而是string
let arr = [{a: 1}, {a: 2}, {a: 5}]
for (let index in arr) {
  console.log(index + 1)
}
// 01
// 11
// 21
  1. 不仅数组本身的元素将被遍历到,自定义的属性也会被遍历到,甚至数组原型链上的属性也会被遍历到
var arr=new Array(1,2,3);
arr.name="hello";
Array.prototype.method=function(){
  console.log("world");
}
for (var index in arr) {
  console.log(index);
}
// 0
// 1
// 2
// name
// method

es6的循环

for of

es6中引入了一种新的循环方法,它就是for-of循环,它既比传统的for循环简洁,又弥补了forEach和for-in循环的弊端。

let arr = [{a: 1}, {a: 2}, {a: 5}]
for (let itemof arr) {
  console.log(item)
}

写法上 for of 和 for in 很相似,但是for of 的功能更加丰富

1. 循环数组
let arr= [10, 40, 70];
for (let value of arr) {
  console.log(value);
}

// 10
// 40
// 70
2. 循环字符串
let str= "this";
for (let value of str) {
  console.log(value);
}
// t
// h
// i
// s
3. 循环一个map
let map= new Map([["a", 1], ["b", 2], ["c", 3]]);

for (let [key, value] of map) {
  console.log(key, value);
}
// a 1
// b 2
// c 3
for (let item of map) {
  console.log(item);
}
// [a, 1]
// [b, 2]
// [c, 3]
4. 遍历一个对象

for of 不能像for in那样直接遍历一个对象,我们可以用Object.keys()方法去解决这个问题

let obj = {a: 12, b: 56, c: 89}
for (let key of Object.keys(obj)) {
  console.log(`${key} = ${obj[key]}`)
}
// a = 12
// b = 56 
// c = 89
5.遍历一个 Set
let set= new Set([1, 1, 2, 2, 3, 3]);
for (let value of set) {
  console.log(value);
}
// 1
// 2
// 3

相关文章

  • Js事件循环

    列表 JavaScript事件循环 测试金字塔 stub JavaScript事件循环理解 javaScript语...

  • JavaScript中的for循环

    JavaScript 语言中的 for 循环用于多次执行代码块,它是 JavaScript 中最常用的一个循环工具...

  • JavaScript简易模态框2

    这里顺便纠正了一个JavaScript的观点for in循环中JavaScript循环的是 索引 而不是某个内容

  • JavaScript中的for循环

    JavaScript 语言中的 for 循环用于多次执行代码块,它是 JavaScript 中最常用的一个循环工具...

  • javascript循环

    ——这篇文章主要介绍javascript中几大循环的区别 最原始的js循环 es5出现以前,我们要遍历一个数组时,...

  • JavaScript循环

    程序中进行有规律的重复性操作,需要用到循环语句。 for循环 for(var i=0;i

  • javascript循环

    循环语句 i++ 相当于 i+1; for 循环格式 例如:for (var i = ali.ength;...

  • javascript循环

    JavaScript里面循环有很多,今天主要说说forEach map filter every some 一、f...

  • JavaScript for of循环

    for of ES6提供三个新的方法——entries(),keys()和valueOf()——用于遍历数组。可以...

  • Javascript for 循环

    for 语句用来控制循环结构,按照指定的循环次数,循环执行循环体内语句(或语句块)。 基本结构如下: for(in...

网友评论

    本文标题:javascript循环

    本文链接:https://www.haomeiwen.com/subject/hzycvftx.html