原生JS forEach()和map()遍历,jQuery$.each()和$.map()遍历

本文对比了原生JavaScript中的forEach()与map()方法及jQuery中的.each()与.map()方法的功能与用法。介绍了这些方法如何遍历数组与对象,并强调了它们在参数设置与返回值方面的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、原生JS forEach()和map()遍历

共同点:

1.都是循环遍历数组中的每一项。
2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input。
3.匿名函数中的this都是指Window。
4.只能遍历数组。

1.forEach()

没有返回值。

var ary = [12,23,24,42,1];  
    var res = ary.forEach(function (item,index,input) {  
           input[index] = item*10;  
    })  
    console.log(res);//-->undefined;  
    console.log(ary);//-->[ 120, 230, 240, 420, 10 ];

2.map()

有返回值,可以return 出来。

var ary = [12,23,24,42,1];  
var res = ary.map(function (item,index,input) {  
    return item*10;  
})  
console.log(res);//-->[120,230,240,420,10];  
console.log(ary);//-->[12,23,24,42,1]; 

二、jQuery .each().map()遍历

共同点:

即可遍历数组,又可遍历对象。

1.$.each()

没有返回值。$.each()里面的匿名函数支持2个参数:当前项的索引i,数组中的当前项n。如果遍历的是对象,k 是键,n 是值。

$.each( ["a","b","c"], function(i, n){  
  console.log( i + ": " + n );  
}); 
  // 0: a
  // 1: b
  // 2: c
 $.each( { name: "John", lang: "JS" }, function(k, n){  
        console.log( "Name: " + k + ", Value: " + n );  
    });  
     //Name: name, Value: John 
    // Name: lang, Value: JS

2.$.map()

有返回值,可以return 出来。.map()2.each()里的参数位置相反:数组中的当前项n,当前项的索引i。如果遍历的是对象,i 是值,n 是键。如果是("span").map().each() ,$(“span”).each()一样。

var arr=$.map( [0,1,2], function(n,i){  
         return n+i;
    });  
    console.log(arr); 
    //[ 0, 2, 4 ]

$.map({"name":"Jim","age":17},function(n,i){  
     console.log(n+":"+i);  
 }); 
    //Jim:name
    //17:age
### 替代 jQuery 中 `$.each` 方法的现代 JavaScript 实现 在现代 JavaScript 中,可以使用多种内置的方法来替代 jQuery 的 `$.each` 方法。以下是几种常见的实现方式: #### 使用原生 `for...of` 循环 `for...of` 是一种简洁且高效的迭代器模式,适用于数组或其他可迭代对象。 ```javascript const items = ['item1', 'item2', 'item3']; for (const item of items) { console.log(item); } ``` #### 使用 `Array.prototype.forEach` 这是最常用的替代方案之一,功能类似于 `$.each`,但更轻量级。 ```javascript ['item1', 'item2', 'item3'].forEach(function(item, index) { console.log(index + ': ' + item); }); ``` #### 使用 `Object.keys()` `forEach` 当需要遍历对象属性时,可以通过 `Object.keys()` 获取键名列表并结合 `forEach` 遍历。 ```javascript const obj = { key1: 'value1', key2: 'value2' }; Object.keys(obj).forEach(function(key) { console.log(key + ': ' + obj[key]); }); ``` #### 使用 `Map` 或 `Set` 数据结构 如果数据存储在 `Map` 或 `Set` 中,则可以直接调用其 `.forEach` 方法。 ```javascript // Map 示例 const map = new Map([['key1', 'value1'], ['key2', 'value2']]); map.forEach((value, key) => { console.log(key + ': ' + value); }); // Set 示例 const set = new Set(['item1', 'item2']); set.forEach(value => { console.log(value); }); ``` #### 使用箭头函数简化回调逻辑 无论采用哪种方法,都可以通过箭头函数进一步优化代码风格。 ```javascript ['item1', 'item2', 'item3'].forEach((item, index) => { console.log(`${index}: ${item}`); }); ``` 以上方法均能有效替代 jQuery 的 `$.each` 功能[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值