js--数组的map()方法的使用 lambda


js--数组的map()方法的使用

var list =[{id:"123",name:"张三",age:"19"},{id:"124",name:"李四",age:"19"},{id:"125",name:"王五",age:"20"}]
listresultTmp =[];
list.map(item=>{
listresultTmp.push({
a:item.id,
c : item.age
})
})
console.log(listresultTmp)
取list 对象中的id和age 形成新的listresultTmp数组
例如:

前言

  作为一个刚刚踏入前端世界的小白,工作中看到身边同事大佬写的代码就像古诗一样简介整齐,而我的代码如同一堆散沙,看上去毫无逻辑感,而且简单的功能需要一大堆代码才能实现,不仅加大了自己的工作量,同时也给调试和维护增加了很大难度。这里拿我的代码和大佬的做一下对比

先上我的代码

复制代码
CategoriesApi().then((res) => {
        for (let i = 0; i < res.list.length; i++) {
         let item={}
             item.name=res.list[i].name
             item.price=res.list[i].price
               .........
             this.DataList.push(item)
          }
        }
      })                        
复制代码

大佬们的代码

复制代码
async getCategories(params) {
      const { list = [] } = await Categories(params)
      this.DataList = [
        list.map((node) => {
          return {
            ...node
          }
        })
      ]
    }
复制代码

所以这里需要说到今天的主角,数组的map用法,

语法及定义

           map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

   map() 方法按照原始数组元素顺序依次处理元素

   我的理解就是map首先会创建一个新的数组,其中新数组的每一个元素就是原数组中每一个元素经过咱们设置的给定函数变化后的结果。也就是说对原始数组中的每一项运行给定的函数,然后按原数组的顺序组装成新的数组,该方法也不会改变原始的数组,还产生一个新数组。

      map()接收两个参数:

    第一个参数必填,为一个函数,就是上面所说的给定的函数(每一项执行的函数,必写),这个给定的函数又有三个参数,第一个为当前元素的值(必写),第二个参数是当前值的下标索引,第三个为当前元素属于的数组对象(目前觉得没啥用)。

     第二个参数非必填,thisValue,对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。(目前还不会用)

简单的实例

复制代码
//定义一个函数,使得传入的每一个值都加上2
    function add2(x,y,z){
        console.log(x+"=="+y+'=='+z);
        return x + 2
    }
    //定义一个数组
    var arr = [1,2,3,4,5,6]
    var newArr = arr.map(add2)
    console.log(newArr);
复制代码

打印结果

复制代码
1==0==1,2,3,4,5,6
2==1==1,2,3,4,5,6
3==2==1,2,3,4,5,6
4==3==1,2,3,4,5,6
5==4==1,2,3,4,5,6
6==5==1,2,3,4,5,6
(6) [3, 4, 5, 6, 7, 8]
复制代码

进阶实例

复制代码
let  dataList = res.list.map(item => {
    return {
        name: item.name,
        sex: item.sex ==1? '男':'女',
        age: item.age
    }
})
复制代码

或者也可以把return省去

复制代码
const dateList=res.list.map(item => ({
    name:item.name,
    age:item.age
    })
);
复制代码

  别的高级的场景用法暂时还没有碰到,我会继续学习,逐步提高自己的代码质量,不再仅仅是用到for循环这么low的写法,还有forEach,for..in,for...of,,,set,filter,every,find等等好多看起来高大上的方法,不光要学会,更重要是在代码中运用到,继续加油!明天又是充满希望的一天!!!!

 

https://www.cnblogs.com/zaishiyu/p/13967240.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM