- 主题:请教个js里map的用法
var arr = ['1', '2', '3'];
arr.map(parseInt);
output: 1,NaN,NaN
arr.map(v => parseInt(v))
output: 1,2,3
why?
--
FROM 61.48.215.189
map映射的函数有三个参数吧,item index, array
【 在 lilnelse (不折腾) 的大作中提到: 】
: 标 题: 请教个js里map的用法
: 发信站: 水木社区 (Thu Aug 12 20:36:33 2021), 站内
:
:
: var arr = ['1', '2', '3'];
: arr.map(parseInt);
:
: output: 1,NaN,NaN
:
: arr.map(v => parseInt(v))
: output: 1,2,3
:
: why?
:
:
: --
: 英子跳到中舱,两只桨飞快地划起来,划进了芦花荡。芦花才吐新穗。紫灰色的芦穗,发着
: 银光,软软的,滑溜溜的,像一串丝线。有的地方结了蒲棒,通红的,像一枝一枝小蜡烛。
: 青浮萍,紫浮萍。长脚蚊子,水蜘蛛。野菱角开着四瓣的小白花。惊起一只青桩(一种水鸟
: ),擦着芦穗,扑鲁鲁鲁飞远了。
: ----《受戒》
:
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 61.48.215.189]
--
FROM 171.83.95.*
parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数,表示被解析字符串的基数。
如果 radix 是 undefined、0或未指定的,JavaScript会假定以下情况:
如果输入的 string以 "0x"或 "0x"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被当做十六进制数去解析。
如果输入的 string以 "0"(0)开头, radix被假定为8(八进制)或10(十进制)。具体选择哪一个radix取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用 parseInt 时,一定要指定一个 radix。
如果输入的 string 以任何其他值开头, radix 是 10 (十进制)。
map(
function callback(currentValue[, index[, array]]) {
// Return element for new_array
}
[, thisArg]
)
callback 函数会被自动传入三个参数:数组元素,元素索引,原数组本身
therefore, you will get:
parseInt('1',0, arr), which is equivalent to parseInt('1',10,arr), i.e., 1
parseInt('2',1,arr), which is NaN
parseInt('3',2,arr), which is NaN, as '3' is invalid binary number.
【 在 lilnelse 的大作中提到: 】
: var arr = ['1', '2', '3'];
: arr.map(parseInt);
: output: 1,NaN,NaN
: ...................
--
FROM 183.95.135.*
那用这种方式:
arr.map(v => parseInt(v))
的时候,就不用传3个参数了是么?
【 在 a0123456789q (a0123456789q) 的大作中提到: 】
: parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数,表示被解析字符串的基数。
: 如果 radix 是 undefined、0或未指定的,JavaScript会假定以下情况:
: 如果输入的 string以 "0x"或 "0x"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被当做十六进制数去解析。
: ...................
--
FROM 61.48.215.189
因为你明确指明了只需要一个参数。
【 在 lilnelse 的大作中提到: 】
: 那用这种方式:
: arr.map(v => parseInt(v))
: 的时候,就不用传3个参数了是么?
: ...................
--来自微水木3.5.11
--
FROM 140.206.195.*
因为parseInt有两个参数,第二个参数是进制,而map的回调函数有三个个参数,第二个参数是index
arr,map(parseInt)相当于
arr.map((v,index,array)=>parseInt(v,index,array));
相当于 parseInt('1',0),parseInt('2',1),parseInt('3',2)
二进制里没有3,所以NaN了
【 在 lilnelse (不折腾) 的大作中提到: 】
: var arr = ['1', '2', '3'];
: arr.map(parseInt);
: output: 1,NaN,NaN
: ...................
--
修改:canper FROM 183.6.114.*
FROM 183.6.114.*
明白了 多谢各位的解答
【 在 canper 的大作中提到: 】
: 因为parseInt有两个参数,第二个参数是进制,而map的回调函数有三个个参数,第二个参数是index
:
:
: ...................
--
FROM 223.104.3.50
讲得很清晰,学习了,非常感谢。
【 在 a0123456789q 的大作中提到: 】
: parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数,表示被解析字符串的基数。
: 如果 radix 是 undefined、0或未指定的,JavaScript会假定以下情况:
: 如果输入的 string以 "0x"或 "0x"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被当做十六进制数去解析。
: ...................
--
FROM 27.154.193.*