数组方法-map方法

 1 /*场景1:假定有一个数值数组(A),将A数组中的值以双倍的形式放到B数组 */
 2  var numbers = [1,2,3];
 3  var doubledNumbers = [];
 4 
 5 // es5中的办法
 6 for(var i = 0; i < numbers.length; i++){
 7   doubledNumbers.push(numbers[i] * 2);
 8 }
 9 console.log(doubledNumbers);//数组打印出来
10 
11 // es5 中的遍历
12 for(var i = 0; i < doubledNumbers.length; i++){
13   console.log(doubledNumbers[i]); //把数组中的值一个个打印出来
14 }
15 
16 
17 // es6 map方法  
//map方法里面用到迭代器函数,并用形参来接受numbers数组里面的值,然后返回number*2到我们定义的新数组doubled中。
18 var doubled = numbers.map(function(number){ 19 return number * 2; 20 }) 21 console.log(doubled); 22 23 // es6 forEach遍历 24 doubled.forEach(function(number){ 25 console.log(number); 26 })
 1 /* 场景2 :假定有一个对象数组(A),将A数中对象某个属性的值存储到B数组中*/
 2 var cars = [
 3   {model:"Buick",price:"CHEAP"},
 4   {model:"BMW",price:"expensive"}
 5 ];
 6 
 7 var prices = cars.map(function(car){
 8     return car.price;
 9 })
10 console.log(prices);
   

 map
这里的map不是“地图”的意思,而是指“映射”,也就是原数组被“映射”成对应新数组。[].map(); 基本用法跟forEach方法类似:

callback的参数也类似:

[].map(function(value, index, array) {
    // ...
});

但是map需要返回值,如果不给,默认返回undefined, map 返回一个新的数组。

使用场景:比如腾讯课堂里面有许多老师的课程,我们要统计所有课程报名人数。怎么办呢?
我们可以把(所有课程)当作一个大的对象,这个对象里面包含许多小的对象-(每个老师的课程)。
每个(老师的课程)这个小对象有(报名人数)这个属性,我们可以用map方法把大对象(所有的课程)中(报名人数)这个属性的值拿出来,然后遍历统计。
原文地址:https://www.cnblogs.com/gshao/p/9601813.html