logo

Map

Last Updated: 2022-04-25

入门。

jshell> Arrays.asList("1", "10", "100").stream().map(Integer::parseInt).collect(Collectors.toList())
$1 ==> [1, 10, 100]

放弃?

> ['1', '10', '100'].map(parseInt)
[ 1, NaN, 4 ]

进阶!

JavaScript 的map会将三个变量扔给函数:当前值,当前 index,和整个数组,也就是说

arr.map(func);

等同于

arr.map((value, index, array) => func(value, index, array));

parseInt有两个参数:字符串string和基数radix

  • 1 => parseInt('1', 0), 0作为基数时实际是使用默认的十进制,所以结果是1
  • 10 => parseInt('10', 1), 1无法作为基数,所以结果是NaN
  • 100 => parseInt('100', 2), 基数为 2,所以是二进制,而二进制的100就是十进制的4