['1', '2', '3'].map(parseInt) what & why ?

... 2020-08-14 14:17:20 小于 1 分钟

['1', '2', '3'].map(parseInt) what & why ?

木易杨前端进阶 (opens new window) 看到的一道题,比较有意思,做个记录

# map 方法定义

map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。

map(function callback(currentValue[, index[, array]]) {
 // Return element for new_array 
}[, thisArg])
1
2
3

# 展开

['1', '2', '3'].map(parseInt)

// 对于每个元素执行一次callback函数,并向 callback 函数中自动传入三个参数:
parseInt(currentValue, index, array)
1
2
3
4

# 变形题

let unary = fn => val => fn(val)
let parse = unary(parseInt)
console.log(['1.1', '2', '0.3'].map(parse))
1
2
3

展开

['1.1', '2', '0.3'].map(parse)

unary = (fn) => {
  return (val) => {
    fn(val)
  }
}
// 对于每个元素执行:
parse(currentValue, index, array)
unary(parseInt)(currentValue, index, array)
((val) => {
  parseInt(val)
})(currentValue, index, array)
1
2
3
4
5
6
7
8
9
10
11
12
13
上次编辑于: 2021年5月31日 15:57