当前位置: 首页 > news >正文

map循环遍历

在 jQuery 中,$.map() 和 $(selector).map() 都可用于循环遍历数据,但它们的使用场景和语法有所不同。以下是详细的对比和用法说明:


1. $.map() - 通用数据映射

作用:遍历数组或对象,返回处理后的新数组
语法

var newArray = $.map(collection, function(item, index) {// 返回处理后的值return modifiedItem;
});
示例
// 遍历数组
var numbers = [1, 2, 3];
var squared = $.map(numbers, function(num) {return num * num;
});
// 结果: [1, 4, 9]// 遍历对象
var person = { name: "Alice", age: 25 };
var values = $.map(person, function(value, key) {return `${key}: ${value}`;
});
// 结果: ["name: Alice", "age: 25"]

特点

  • 支持数组和对象

  • 自动过滤 null 和 undefined 的返回值

  • 返回新数组,不修改原数据


2. $(selector).map() - DOM元素映射

作用:遍历 jQuery 对象中的 DOM 元素,返回新 jQuery 对象或数组
语法

var result = $('selector').map(function(index, element) {// 返回处理后的值return modifiedValue;
}).get(); // .get() 转为纯数组
示例
<ul><li>Apple</li><li>Banana</li>
</ul>
// 获取所有 <li> 文本并转为大写
var texts = $('li').map(function(index, element) {return $(element).text().toUpperCase();
}).get();
// 结果: ["APPLE", "BANANA"]

特点

  • 专为 DOM 设计

  • 回调参数顺序是 (index, element)(与 $.map() 相反)

  • 需调用 .get() 转为普通数组


3. 对比总结

特性$.map()$(selector).map()
输入类型数组、对象jQuery DOM 集合
回调参数顺序(item, index)(index, element)
返回值自动返回新数组返回 jQuery 对象(需 .get()
过滤机制自动跳过 null/undefined保留所有返回值
性能更快(纯数据操作)较慢(涉及 DOM 操作)

4. 常见用法场景

(1) 数据转换
// 将价格数组格式化为货币字符串
var prices = [10, 20, 30];
var formatted = $.map(prices, function(price) {return `$${price.toFixed(2)}`;
});
// 结果: ["$10.00", "$20.00", "$30.00"]
(2) 过滤数据
// 筛选偶数
var numbers = [1, 2, 3, 4];
var evens = $.map(numbers, function(num) {return num % 2 === 0 ? num : null;
});
// 结果: [2, 4]
(3) DOM 属性提取
// 获取所有链接的 href
var urls = $('a').map(function() {return $(this).attr('href');
}).get();
(4) 嵌套数据扁平化
var matrix = [[1, 2], [3, 4]];
var flat = $.map(matrix, function(row) {return $.map(row, function(cell) {return cell * 2;});
});
// 结果: [2, 4, 6, 8]

5. 注意事项

  1. $.map() 会跳过 null/undefined
    若需保留所有值,改用原生 Array.map()

    var result = originalArray.map(function(item) {return transform(item); // 即使返回 undefined 也会保留
    });
  2. DOM 遍历优先用 $(selector).each()
    如果只是操作 DOM 而不需要返回新数组,更推荐:

    $('li').each(function(index, element) {$(element).addClass('item-' + index);
    });
  3. 性能优化
    大数据量时,原生 for 循环或 Array.map() 比 $.map() 更快。


代码对比:$.map() vs 原生 map

// jQuery
var jqResult = $.map([1, 2, 3], function(num) {return num * 2;
});// 原生 JavaScript
var jsResult = [1, 2, 3].map(function(num) {return num * 2;
});// 结果相同: [2, 4, 6]

总结

  • $.map():适合处理混合数据(数组/对象),需自动过滤空值

  • $(selector).map():专为 DOM 设计,返回 jQuery 对象

  • 简单循环:用 $.each() 或 $(selector).each()

  • 现代项目:优先使用原生 Array.map() 和 for...of

http://www.lryc.cn/news/602704.html

相关文章:

  • 学习 字节UI TARS GUI Agent
  • 为什么bert是双向transformer
  • 无人机气动设计模块解析
  • html转word下载
  • NVDB-CAVD 杯汽车信息安全系列赛事
  • 基于Java的汽车商城系统设计与实现
  • 汽车膨胀水箱(副水箱)液位传感器的作用
  • 小鹏汽车AI测试
  • stm32开发 -- TFTLCD相关
  • API产品升级丨全知科技发布「知影-API风险监测平台」:以AI重构企业数据接口安全治理新范式
  • JavaWeb 入门:HTML 基础与实战详解(Java 开发者视角)
  • 分数函数的实用性及与数据密度的关系解析
  • ffmpeg-7.1.1 下载安装 windows 版,MP4 转 m3u8 切片,遇到报错 Unrecognized option ‘vbsf‘的解决办法
  • SD卡简介与驱动开发
  • 优测推出HarmonyOS全场景测试服务,解锁分布式场景应用卓越品质!
  • Makefile if语句用法
  • Linux内核驱动开发核心问题全解
  • Python全栈项目--基于深度学习的视频内容分析系统
  • 使用Docker在Rocky Linux 9.5上在线部署LangFlow
  • GoldenDB 分布式数据库详解
  • 在CentOS上以源码编译的方式安装PostgreSQL
  • <七> CentOS 8 安装最新版本Docker
  • 很妙的一道题 Leetcode234. 回文链表
  • 力扣 之 最小覆盖子串(变长滑动窗口,越短越好)
  • 电磁兼容五:仿真技术
  • Mac安装navicat17版本教程mac下载Navicat Premium for Mac v17.1.9【好用】
  • 微算法科技(NASDAQ:MLGO)利用基于区块链的机器学习模型进行交易分类,实现交易数据的匿名化
  • redis数据库的四种取得 shell方法
  • 安宝特案例丨户外通信机房施工革新:AR+作业流技术破解行业难题
  • 免费版酒店收银系统弹窗在押金原路退回流程中的应用价值探究 ——仙盟创梦IDE