当前位置:首页 > JavaScript

js map实现

2026-03-14 13:13:27JavaScript

map 方法的基本用法

map 是 JavaScript 数组的一个高阶函数,用于遍历数组并对每个元素执行指定的操作,最终返回一个新数组。原数组不会被修改。

const numbers = [1, 2, 3];
const doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6]

map 方法的参数

map 方法接受一个回调函数作为参数,回调函数可以接收三个参数:

  • currentValue:当前处理的数组元素。
  • index(可选):当前元素的索引。
  • array(可选):调用 map 的数组本身。
const numbers = [1, 2, 3];
const squaredWithIndex = numbers.map((num, index) => `${index}: ${num * num}`);
console.log(squaredWithIndex); // ["0: 1", "1: 4", "2: 9"]

使用 thisArg 绑定上下文

map 方法的第二个参数是 thisArg,用于指定回调函数中的 this 值。

const obj = {
  multiplier: 2,
  multiply(numbers) {
    return numbers.map(function(num) {
      return num * this.multiplier;
    }, this);
  }
};
console.log(obj.multiply([1, 2, 3])); // [2, 4, 6]

手动实现 map 方法

以下是一个手动实现 map 方法的示例:

js map实现

Array.prototype.myMap = function(callback, thisArg) {
  const result = [];
  for (let i = 0; i < this.length; i++) {
    result.push(callback.call(thisArg, this[i], i, this));
  }
  return result;
};

const numbers = [1, 2, 3];
const tripled = numbers.myMap(num => num * 3);
console.log(tripled); // [3, 6, 9]

map 方法的常见用途

  • 转换数组元素:将数组中的每个元素转换为另一种形式。
  • 提取对象属性:从对象数组中提取特定属性。
  • 生成新数据结构:将数组转换为另一种数据结构(如对象或字符串)。
const users = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Charlie' }
];
const names = users.map(user => user.name);
console.log(names); // ["Alice", "Bob", "Charlie"]

注意事项

  • map 方法不会改变原数组,而是返回一个新数组。
  • 回调函数必须显式返回值,否则新数组会填充 undefined
  • 稀疏数组(包含空位)的 map 行为会跳过空位。

标签: jsmap
分享给朋友:

相关文章

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let curr…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…

js 实现图片轮播

js 实现图片轮播

基础实现方案 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS负责样式布局,JavaScript处理轮播逻辑。 <div class="…

js 实现文件上传

js 实现文件上传

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。以下是一个基础示例: <input ty…