一分钟掌握js中的map方法

map是什么

map是操作js数组的方法,也可以说是一个函数,作用是遍历整个数组,对里面的每个值做处理再返回一个新的值

注意,除非使用map数组里面存在嵌套复杂的对象、数组结构,否则map是不会修改原数组的

map方法的结构及入参

map的入参需要传递一个函数进去,因为说它是可以遍历数组的,所以传入的这个函数调用的次数由数组的长度决定,长度是3就是3次,是4就是4次。

//index可以不传
[1,2,3].map(function(item,index){
    //这个数组长度是3所以函数调用3次
    //item指的遍历到的对应的数组值 函数调用的三次中 第一次是1 ,然后是2、3
    //index是数组的索引,三次分别是0,1,2
})

上面的例子意思就是map里面的函数运行了3次,分别是function(1,0)、function(2,1)、function(3,2)。

然后你可以做什么呢,可以在函数里面return(return的内容将作为新值代替数组遍历到的旧值item),比如将函数里面的值都变成原来的两倍:

let b=[1,2,3].map(function(item,index){
   return item*2
})
console.log(b)//[2,4,6]

语法糖

es6给我们提供了一些便利,比如箭头函数()=>{}
我们可以用箭头函数替代原来的函数:

let b=[1,2,3].map((item,index)=>{
   return item*2
})
console.log(b)//[2,4,6]

用箭头函数有什么好处呢,如果里面不用进行复杂的判断,我们可以将右边的{}改成表达式直接返回,省略return:

let b=[1,2,3].map((item,index)=> item*2 )
console.log(b)//[2,4,6]

因为在我们这里例子里面index索引值没用到所以我们可以不传,当入参只有一个时,前面的括号()都可以省略。

let b=[1,2,3].map( item => item*2 )
console.log(b)//[2,4,6]

语法糖会让你的代码看起来更加高级优雅。

还有有时候你可能不想改变所有的值,比如我只想改变小于2的数字,其他的不变,那就进行判断不满足条件的把item原路返回:

let b=[1,2,3].map(item=>{
   if(item<2){
      return item*2
   }else{
      return item
   }
})
console.log(b)//[2,2,3]

当然你可以改成用三目运算。

let b=[1,2,3].map(item=>{
   //返回,当item<2的时候返回item*2否则返回item
   return item<2?item*2:item
})
console.log(b)//[2,2,3]

然后你又发现,它只有一个return,可以用语法糖。

let b=[1,2,3].map(item => item<2?item*2:item)
console.log(b)//[2,2,3]

map一般不改变原数组

除非是嵌套了对象或者数组的数组你直接修改了内部的引用地址,一般数组使用map是不会改变原数组的,你得找人接收。

let a=[1,2,3]
let b= a.map(item => item<2?item*2:item)
console.log(a)//[1,2,3]
console.log(b)//[2,2,3]
  • 31
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JavaScript map() 方法是一个数组方法,它返回一个新的数组,该数组的元素是原始数组每个元素调用指定函数后的返回值。除了常规的 map() 方法外,还有以下几种 map() 方法: 1. flatMap():flatMap() 方法首先对每个元素执行 map(),然后将结果扁平化为一个新数组。该方法返回一个新数组,新数组的元素是原始数组每个元素调用指定函数后的返回值,扁平化后的结果。 2. mapTo():mapTo() 方法将指定的值映射到每个数组元素,并返回一个新数组。 3. mapKeys():mapKeys() 方法将指定的键映射到原始数组的每个元素,并返回一个新对象,其键是原始数组元素的键,值是指定键的值。 4. mapValues():mapValues() 方法将指定的值映射到原始数组的每个元素,并返回一个新对象,其键是原始数组元素的键,值是指定值的结果。 下面是一个示例代码片段,演示了这些方法的使用: ``` const numbers = [1, 2, 3, 4, 5]; const doubled = numbers.map((n) => n * 2); console.log(doubled); // [2, 4, 6, 8, 10] const flattened = numbers.flatMap((n) => [n, n*2]); console.log(flattened); // [1, 2, 2, 4, 3, 6, 4, 8, 5, 10] const mappedTo = numbers.mapTo(10); console.log(mappedTo); // [10, 10, 10, 10, 10] const mappedKeys = numbers.mapKeys((n) => `key_${n}`); console.log(mappedKeys); // {key_1: 1, key_2: 2, key_3: 3, key_4: 4, key_5: 5} const mappedValues = numbers.mapValues((n) => n * 2); console.log(mappedValues); // {0: 2, 1: 4, 2: 6, 3: 8, 4: 10} ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在下月亮有何贵干

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值