6.数组ES6新增:①数组遍历forEach,filter,every,some,map②判断数组是否包含某个值indexOf,includes等③数组扁平化.flat(Infinity)

目录

一:数组循环

①for循环遍历

 ②a.forEach(function(遍历的元素,索引,此数组对象){}) 用function的匿名函数作为参数

③ 数组循环的比较

④map将数组里面的子元素转换成number或者string

二:判断数组是否包含某个值

1.array.indexOf

2.array.includes(searcElement,[fromIndex]) 可以传两个参数,第一个是要查找的元素,第二个是查找的起始位置

3.array.find(item => {return } )

4.array.findeIndex(callback[,thisArg])

三:数组扁平化

① 用数组ES6新增的 .flat(Infinity) 方法

②replace + split

③replace + JSON.parse

④普通递归


一:数组循环

①for循环遍历

 ②a.forEach(function(遍历的元素,索引,此数组对象){}) 用function的匿名函数作为参数

forEach 不能用 break 或者 return

③ 数组循环的比较

  •      forEach改变元素组
  •      filter在元素组的基础上生成一个新数组
  •      every  和 some 做判断
  •      map 生成一个新数组    

④map将数组里面的子元素转换成number或者string

    <script>
       var arr = ['1','2','3']
       let newArr1 = arr.map(Number)  //[1,2,3]
       let newArr2 = newArr1.map(String)  //['1','2','3']
       console.log(newArr1);
       console.log(newArr2);
    </script>

二:判断数组是否包含某个值

1.array.indexOf

  • 判断数组中是否存在某个值,如果存在,则返回数组元素的下标,否则返回-1
    <script>
        var arr = [1,2,6,8,9]
        console.log(arr.indexOf(2))  //1
    </script>

2.array.includes(searcElement,[fromIndex]) 可以传两个参数,第一个是要查找的元素,第二个是查找的起始位置

  • 判断数组中是否存在某个值,如果存在返回true,否则返回false
    <script>
        var arr = [1,2,6,8,9]
        console.log(arr.includes(2))  //true
    </script>

3.array.find(item => {return } )

  • 返回数组中满足条件的第一个元素的值,如果没有,返回undefined
    <script>
        var arr = [1,2,6,8,9]
        var res = arr.find(item =>{
            return item>6
        })
        console.log(res)  //8
    </script>

4.array.findeIndex(callback[,thisArg])

  • 返回数组中满足条件的第一个元素的下标,如果没有找到,返回 -
    <script>
        var arr = [1,2,6,8,9]
        var res = arr.findIndex(item =>{
            return item>6
        })
        console.log(res)  //3
    </script>

三:数组扁平化

  • 对于前端项目开发过程中,偶尔会出现层叠数据结构的数组,我们需要将多层级数组转化为一级数组(即提取嵌套数组元素最终合并为一个数组),使其内容合并且展开。那么该如何去实现呢?
需求:多维数组=>一维数组

[1,[1,[8,9,9,[2]],8,3],2]     =>     [1, 1, 8, 9, 9, 2, 8, 3, 2]

① 用数组ES6新增的 .flat(Infinity) 方法

    <script>
        var x = [1,[1,[8,9,9,[2]],8,3],2]
        console.log(x.flat(Infinity))   //Infinity任意深度,不加Infinity代表只拆解第一层
    </script>

replace + split

  • 先用 JSON.stringify转换成字符串类型,
  • 再用replace将所有的 []  替换成空
  • 再以逗号分割成数组
    <script>
        let x = [1,[1,[8,9,9,[2]],8,3],2]
        let str = JSON.stringify(x);  // 先转换成字符串类型
        x = str.replace(/(\[|\])/g, '').split(',')   //[1, 1, 8, 9, 9, 2, 8, 3, 2]
        console.log(x)
    </script>

replace + JSON.parse

  • 先将数组用JSON.stringify转换为字符串

  • 再用replace将 [ 和 ] 以 空 替代

  • 再在这行字符串两边加上 [ 和 ] 

  • 再用 JSON.parse 转换成新数组

    <script>
        let x = [1,[1,[8,9,9,[2]],8,3],2]
        let str = JSON.stringify(x);  // 先转换成字符串类型  [1,[1,[8,9,9,[2]],8,3],2]
        str = str.replace(/(\[|\])/g, '')  //  1,1,8,9,9,2,8,3,2
        str = '[' + str + ']'     //   [1,1,8,9,9,2,8,3,2]
        x = JSON.parse(str)       //   [1, 1, 8, 9, 9, 2, 8, 3, 2]
        console.log(x)    
    </script> 

④普通递归

    <script>
        // 数组的扁平化(将多维数组转换成一维数组)
        var x = [1,[1,[8,9,9,[2]],8,3],2]
        let newX = []
        function fn(x){    //[1,2,3]
            x.forEach(item => {
                if(Array.isArray(item)){
                    fn(item)
                }else{
                    newX.push(item)
                }  
            })
        }
        fn(x)
        console.log(newX)   //[1, 1, 8, 9, 9, 2, 8, 3, 2]
    </script>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ES6提供了两种方法判断数组是否包含某个元素:includes()方法和indexOf()方法。 includes()方法是ES6新增的,可以用来判断数组是否包含特定元素。它的语法如下: arr.includes(valueToFind, fromIndex) 其中,arr表示要进行检索的数组,valueToFind表示要查找的元素,fromIndex表示从哪个索引开始查找(可选,默认为0)。includes()方法返回一个布尔,表示数组是否包含该元素。 例如: let arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3)); // 输出true console.log(arr.includes(6)); // 输出false indexOf()方法是JavaScript原生方法,也可以用来判断数组是否包含某个元素。它的语法如下: arr.indexOf(searchElement[, fromIndex]) 其中,arr表示要进行检索的数组,searchElement表示要查找的元素,fromIndex表示从哪个索引开始查找(可选,默认为0)。如果数组中存在该元素,则返回该元素的索引(从0开始),否则返回-1。 例如: let arr = [1, 2, 3, 4, 5]; console.log(arr.indexOf(3)); // 输出2 console.log(arr.indexOf(6)); // 输出-1 需要注意的是,这两种方法都可以检查undefined元素是否数组中,而且可以检查NaN元素是否数组中。同时,在使用indexOf()方法时,要注意返回可能是0(代表第一个元素索引),所以不能直接使用if(arr.indexOf(value))判断是否包含该元素,而应该使用if(arr.indexOf(value) !== -1)来判断

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值