美文网首页
js循环操作和效率分析(for、while、forEach、ma

js循环操作和效率分析(for、while、forEach、ma

作者: MYSUNFLOWER | 来源:发表于2018-10-23 17:28 被阅读0次

for循环四种写法:

const persons = ['郑昊川', '钟忠', '高晓波', '韦贵铁', '杨俊', '宋灿']

// 方法一

for (let i = 0; i < persons.length; i++) {

console.log(persons[i])

}

// 方法二 , 缓存长度

for (let i = 0, len = persons.length; i < len; i++) {

console.log(persons[i])

}

// 方法三 ,  取值和判断合并

for (let i = 0, person; person = persons[i]; i++) {

console.log(person)

}

或者:

for (let i = 0, person; person = persons[i++];) { 

console.log(person) 

}  

// 方法四 , i--与判断合并,倒序迭代

for (let i = persons.length; i--;) {

console.log(persons[i])

方法三 :如果person的值不是Truthy时,循环结束。

方法四:倒序遍历。

理论上讲方法二比方法一要快,但是事实并非如此,参考实践:https://blog.csdn.net/haochuan9421/article/details/81414532

while循环以及ES6+的新语法forEach、map和for of

// 方法五,while

function method5() {

var arrCopy = []

console.time('method5')

let i = 0

while (i < hugeArr.length) {

arrCopy.push(hugeArr[i++])

}

console.timeEnd('method5') }

// 方法六,forEach

function method6() {

var arrCopy = []

console.time('method6')

hugeArr.forEach((item) => {

arrCopy.push(item)

})

console.timeEnd('method6')

}

// 方法七,map

function method7() {

var arrCopy = []

console.time('method7')

arrCopy = hugeArr.map(item => item)

console.timeEnd('method7')

}

// 方法八,for of

function method8() {

var arrCopy = []

console.time('method8')

for (let item of hugeArr) {

arrCopy.push(item)

}

console.timeEnd('method8')

在`node`下,`forEach`、`map`和`for of` 这些`ES6+`的语法并没有传统的`for`循环或者`while`循环快,特别是`map`方法。但是由于`map`有返回值,无需额外调用新数组的`push`方法,所以在执行浅拷贝任务上,内存占用很低。而`for of`语法在内存占用上也有一定的优势。`for循环 while循环 for of 循环`是可以通过`break`关键字跳出的,而`forEach map`这种循环是无法跳出的。 但是随着执行环境和浏览器的不同,这些语法在执行速度上也会出现偏差甚至反转的情况。参考:https://blog.csdn.net/haochuan9421/article/details/81414532

相关文章

网友评论

      本文标题:js循环操作和效率分析(for、while、forEach、ma

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