之前写过一篇关于数组方法的总结,地址点击跳转,今天来详细讲解一下用法以及分析一个练习题.
-
定义:
- map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
- map() 方法按照原始数组元素顺序依次处理元素。
- map() 不会对空数组进行检测。
- map() 不会改变原始数组。
-
语法:
array.map(function(currentValue,index,arr), thisValue)
- 参数解释:
- function(currentValue,index,arr)这个是处理函数,用于处理原数组的每一个值,并返回该值.
- currentValue 必须。当前元素的值
- index 可选。当前元素的索引值
- arr 可选。当前元素属于的数组对象
- thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。 如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。
- function(currentValue,index,arr)这个是处理函数,用于处理原数组的每一个值,并返回该值.
- 参数解释:
-
习题:
['1', '2', '3'].map(parseInt)//这个的结果是啥?
- 要想解答这个咱们要先弄清楚这map的传参,他的第一个参数是一个functon,这个function会默认接受到三个参数(currentValue,index,arr)分别是(当前的元素值--索引值--原数组)
- 现在我们这个练习参入的这个function是parseInt,这个parseInt函数只接受二个参数即parseInt(string, radix)
- parseInt() 函数可解析一个字符串,并返回一个整数。
- string:要被解析的字符串
- radix:可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。 如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。 如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
- 此时,string就是currentValue的值,radix就是index的值
['1', '2', '3'].map(parseInt)可以**想象**为 ==> ['1', '2', '3'].map(parseInt(currentValue,index)) //这样 parseInt('1',0)==> //radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理。这个时候返回1 // parseInt('2',1)==>//基数为1(1进制)表示的数中,最大值小于2,所以无法解析,返回NaN // parseInt('3',2)==>//基数为2(2进制)表示的数中,最大值小于3,所以无法解析,返回NaN //综合以上:我们可以得出答案为[1,NaN,NaN]
-
说明:
- 很多时候我们往往只是关注该方法如何简单的使用,而没有关注此函数的具体参数有哪些,代表啥,导致一些复杂的情况无法处理或者分析不出结果,这些往往是决定细节的地方.加油!