实现数组的 map 方法

手写 TypeScript 版本的数组 map 方法

问题

实现一个 myMap 函数,功能与数组原生的 map 方法相同,但不能使用 map 方法本身。

解答

/**
 * @file 实现数组 map 方法
 */

function myMap<T, R>(arr: T[], callbackFn: (v: T) => R): R[] {
  const result: R[] = [];
  for (let i = 0; i < arr.length; i++) {
    result[i] = callbackFn(arr[i]);
  }
  return result;
}

// 测试
console.log(myMap([1, 2, 3], v => v * 2)); // [2, 4, 6]

export default {};

关键点

  • 创建新数组存储转换后的结果,不修改原数组
  • 使用 for 循环遍历原数组的每个元素
  • 对每个元素调用回调函数,将返回值存入新数组对应位置
  • 使用 TypeScript 泛型 <T, R> 保证类型安全,T 为输入类型,R 为输出类型