优秀的编程知识分享平台

网站首页 > 技术文章 正文

js常用循环的区别(js循环语句有几种)

nanyue 2024-07-18 03:48:15 技术文章 12 ℃

map(),forEach(),every(),some(),filter()的区别

在实际项目中在数据交互中会经常需要用到循环,你是否只会用forEach呢?为了减少请求,会在达到某个要求后需要及时退出,是否就只会用for循环了呢?

今天就介绍几种常用的循环,分析他们之间的区别,话不多说直接看案例。

1.map

let arr = [1,2,3,4,5]
let newarr =arr.map((item, index) => {
  console.log(index) // 0 1 2 3 4
  return item * 2
})
console.log(arr) // [1, 2, 3, 4, 5]
console.log(newarr) // [2, 4, 6, 8, 10]

map不会改变原数组,他可以返回一个新的数组,当遍历数组时,即使内部改变原数组的时也不会改变新的数组,简单来说不改变原数组、新添加的元素不会进入循环里

2.forEach

let arr = [1, 2, 3, 4, 5]
let newarr = arr.forEach((item, index) => {
    console.log(index) // 0 1 2 3 4
    if (item === 2) {
        return
    }
})
console.log(arr) // [1, 2, 3, 4, 5]
console.log(newarr) // undefined

forEach不会生成一个新的数组,而且无法通过return或break跳出本次循环,即使符合return的条件,但是会继续循环,就如上面的例子,即使item === 2为true但是3、4、5还是会继续进入循环。

3.every

let arr = [1, 2, 3, 4, 5]
let newArr = arr.every((item, index) => {
    console.log(index) // 0
    return item > 1
})
console.log(arr) //[1, 2, 3, 4, 5]
console.log(newArr) //false

every不会改变原数组,遍历数组的每一项,如果每一项都满足条件,则会返回true。

4.some

let arr = [1, 2, 3, 4, 5]
let newArr = arr.some((item, index) => {
    console.log(index) // 0 1
    return item > 1
})
console.log(arr) //[1, 2, 3, 4, 5]
console.log(newArr) //true

some不会改变原数组,遍历数组的每一项,如果任一项满足条件,则会返回true。

5.filter

let arr = [1, 2, 3, 4, 5]
let newArr = arr.filter((item, index) => {
    console.log(index) // 0 1 2 3 4
    return item > 1
})
console.log(arr) //[1, 2, 3, 4, 5]
console.log(newArr) //[2, 3, 4, 5]

filter不会改变原数组,返回符合条件的数组。


简单总结

1.希望在符合条件时退出循环,用 every()some()

两者区别如下:

1)some一直在找符合条件的值,一旦找到,则不会继续迭代下去。

2)every从迭代开始,一旦有一个不符合条件,则不会继续迭代下去。

2.希望返回符合条件的数据,用 filter()

3.希望对数组进行一些集体更改,用map()

4.仅仅想迭代数组,使用forEach()

5.返回值

1)every和some都返回一个布尔值true或false

2)filter和map返回一个数组

3)forEach没有返回值


如果有错误的地方请指出,我们一起学习进步!

如果对你有帮助,可以转发/收藏,点个赞给个支持一下吧~

最近发表
标签列表