Javascript数组方法:map()方法

目录

作用:

语法

参数说明

实例

基本用法

数组嵌套对象

理解map的thisValue参数

 模拟map()方法底层


作用:

1.该方法会创建一个新的数组,不会改变原数组

 2.将数组中的每个元素进行处理,将返回的值组成一个新的数组(可以理解成有一个for循环,遍历这个数组,并且对每一个元素进行处理,并把处理后的值通过return加入至新数组)

语法

array.map(function(currentValue,index,arr), thisValue)

参数说明

function(currentValue, index,arr):必须。数组中的每个元素都会执行这个函数

参数描述
currentValue必须。当前元素的值
index可选。当前元素的索引值
arr可选。当前元素属于的数组对象

thisValue

可选。可指定 function 里的 “this” 的值。

实例

基本用法

        let arr = [1, 2, 3];
        // 声明一个变量接受返回的新数组
        let new_arr = arr.map(function (item, idx) {
            console.log(item, '=>', idx);
            return item * 2; //把返回的值组成一个新数组
        })
        console.log(new_arr);

数组嵌套对象

        var arr = [{
                key: 'a',
                value: 10
            },
            {
                key: 'b',
                value: 20
            },
            {
                key: 'c',
                value: 30
            }
        ];
        // 目标:将arr数组转为[{a:10},{b:20},{c:30}]
        var new_arr = arr.map(function (obj,idx) {
            // 看下此时的两个参数是什么
            console.log('idx:',idx,'  元素(对象):',obj)
            // 用一个临时的对象存储
            var tempObj = {};
            tempObj[obj['key']] = obj.value;
            // 返回这个临时对象
            return tempObj;
        });
        console.log(new_arr);

 

理解map的thisValue参数

        arrA = [1,2,3];
        arrB = [4,5,6];
        arr_new = arrA.map(function(item,idx){
            // this指向了arrB,将arrB的数组返回组成新数组
            return this[idx];
        },arrB);
        // 原数组不变
        console.log('arrA:',arrA);
        console.log('arrB:',arrB);
        // 返回的新数组[4, 5, 6]
        console.log('arr_new:',arr_new);

 模拟map()方法底层

        var Brray =function(arr) {
            this.arr = arr,
            this.map = function(callback) {
                var newArr = [];
                for (var i = 0; i < this.arr.length; i++) {
                    newArr[i] = callback(this.arr[i], i, this.arr);
                }
                return newArr;
            }
        }
        var newArr = new Brray([1,2,5]);
        var newArrr = newArr.map(function (item, idx, arr) {
            return item * 2;
        });
        console.log(newArrr);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱写代码的小锦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值