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

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

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

map 方法定义

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

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

展开

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

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

变形题

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

展开

['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)
MIT Licensed | Copyright © 2017-present 进击的学霸, 自豪的使用 七牛云,已加入十年之约