js常用处理请求到的数据的方法(即map,filter,find,findIndex,some,every一些常用方法的使用)

前言:

本节介绍了es6的方法,先说一下区别

  1. map,filter,find,findIndex 都是返回数据
  2. some,every返回布尔值
  3. map和filter的区别在于 map返回一个和原数组数量(下标)相同的数组
  4. filter和find的区别,find是直接返回一个符合条件的,切不一定是数组
  5. find和findIndex区别就是一个是返回下标一个是数据,可以理解成 data(findIndex) = find

话不多说,平时我们最长用道的就是同ajax或者其他方式请求数据,所以对数据进行处理就很重要
例如想下面的数据,我们只是想要轮播图链接组成的数组

{ "message": [ { "image_src": "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3857696996,2875137765&fm=26&gp=0.jpg", "open_type": "navigate", "goods_id": 129, "navigator_url": "/pages/goods_detail/main?goods_id=129" }, { "image_src": "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3857696996,2875137765&fm=26&gp=0.jpg", "open_type": "navigate", "goods_id": 395, "navigator_url": "/pages/goods_detail/main?goods_id=395" }, { "image_src": "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3857696996,2875137765&fm=26&gp=0.jpg", "open_type": "navigate", "goods_id": 38, "navigator_url": "/pages/goods_detail/main?goods_id=38" } ], "meta": { "msg": "获取成功", "status": 200 } }

需求,一个不要对象数组中的其他元素,只要数据中轮播图链接组成的一个数组,即由对象中一个键组成的数组

    <script>
        // 相当于请求到的数据
        var res ={ "message": [ { "image_src": "https://img2.woyaogexing.com/2020/11/27/04fb8525072a41dc832fcfcfdbb06b7b!1242x9999.jpeg", "open_type": "navigate", "goods_id": 129, "navigator_url": "/pages/goods_detail/main?goods_id=129" }, { "image_src": "https://img2.woyaogexing.com/2020/11/27/04fb8525072a41dc832fcfcfdbb06b7b!1242x9999.jpeg", "open_type": "navigate", "goods_id": 395, "navigator_url": "/pages/goods_detail/main?goods_id=395" }, { "image_src": "https://img2.woyaogexing.com/2020/11/27/04fb8525072a41dc832fcfcfdbb06b7b!1242x9999.jpeg", "open_type": "navigate", "goods_id": 38, "navigator_url": "/pages/goods_detail/main?goods_id=38" } ], "meta": { "msg": "获取成功", "status": 200 } }
        // 获取轮播图数据
        var {message} = res;
        // 获取轮播图链接数组
        var swiper = message.map(v=>v.image_src)
        console.log(swiper);
    </script>

在这里插入图片描述

需求,在我请求订单创建时间的时候,发现返回的是时间戳,这样不行,所以在对象中重新创建一个键放到对象中,值为标准时间

 <script>
        var res =  [
            {name:'wei',age:10,create_time:1562221487},
            {name:'cun',age:20,create_time:1662221487},
            {name:'bin',age:30,create_time:1762221487},
        ]
        var data = res.map((v,i) => ({...v,ctime:(new Date(v.create_time).toLocaleString())}))
        console.log(data);
    </script>

在这里插入图片描述

需求,在请求到的商品中,有的有标签,有的没有标签,我要把有标签的数据筛选出来(空,或未false)

    <script>
        var res =  [
            {name:'wei',age:10,create_time:1562221487,tab:'1'},
            {name:'cun',age:20,create_time:1662221487,tab:''},
            {name:'bin',age:30,create_time:1762221487},
        ]
        var data = res.filter((v,i) => v.demo)
        console.log(data);
    </script>

在这里插入图片描述

需求,我需要筛选年龄大于等于20的数据,并且将这些数据组成数组

    <script>
        var res =  [
            {name:'wei',age:10},
            {name:'cun',age:20},
            {name:'bin',age:30},
        ]
        var data = res.filter(v => v.age >= 20)
        console.log(data);
    </script>

在这里插入图片描述

需求,我需要找到所有名字叫wei的人

    <script>
        var res =  [
            {name:'wei',age:10},
            {name:'cun',age:20},
            {name:'bin',age:30},
            {name:'wei',age:30},
        ]
        var data = res.filter(v => v.name == 'wei')
        console.log(data);
    </script>

在这里插入图片描述

有很多数据,我要我想要的数据的下标

    <script>
        var res =  [
            {name:'wei',age:10,create_time:1562221487,tab:'1'},
            {name:'cun',age:20,create_time:1662221487,tab:''},
            {name:'bin',age:30,create_time:1762221487},
        ]
        var data = res.findIndex((v,i) => v.name == 'cun')
        console.log(data); //1
    </script>

我想找到第一个名字叫cun的人,就算后面还有这样的数据也不要了

    <script>
        var res =  [
            {name:'wei',age:10,create_time:1562221487,tab:'1'},
            {name:'cun',age:20,create_time:1662221487,tab:''},
            {name:'cun',age:30,create_time:1762221487},
        ]
        var data = res.find((v,i) => v.name == 'cun')
        console.log(data);
    </script>

在这里插入图片描述

判断数据中的name是否都是wei(全部都是这个)

    <script>
        var res =  [
            {name:'wei',age:10},
            {name:'cun',age:20},
            {name:'bin',age:30},
            {name:'wei',age:30},
        ]
        var data = res.every(v => v.name == 'wei')
        console.log(data); //false
    </script>

判断数据中的name是否有wei(只要一个是这个)

    <script>
        var res =  [
            {name:'wei',age:10},
            {name:'cun',age:20},
            {name:'bin',age:30},
            {name:'wei',age:30},
        ]
        var data = res.some(v => v.name == 'wei')
        console.log(data); //true
    </script>
posted @ 2022-04-02 09:47  coderwcb  阅读(39)  评论(0编辑  收藏  举报