艾利百科--临沂网站制作,临沂网页设计,临沂微信公众号,兼容并蓄,开放共赢!

艾利百科

当前位置: 主页 > 网站制作 > jQuery/JS >

JS中forEach和jQuery中each的区别与联系

时间:2018-10-01 17:30来源:未知 作者:kunbeatable 点击:
forEach() 方法对数组的每个元素执行一次提供的函数。 array.forEach(callback(currentValue, index, array){ //do something}, this) callback 函数会被依次传入三个参数: 数组当前项的值 数组当前项的索引 数组对象本身 for 循环转换为 forEach 转换之前

forEach() 方法对数组的每个元素执行一次提供的函数。

array.forEach(callback(currentValue, index, array){
    //do something
}, this)

callback 函数会被依次传入三个参数:

  • 数组当前项的值
  • 数组当前项的索引
  • 数组对象本身

for 循环转换为 forEach

转换之前

const items = ['item1', 'item2', 'item3'];
const copy = [];

for (let i=0; i<items.length; i++) {
  copy.push(items[i])
}

转换之后

const items = ['item1', 'item2', 'item3'];
const copy = [];

items.forEach(function(item){
  copy.push(item)
});

下面的代码会为每一个数组元素输出一行记录:

function logArrayElements(element, index, array) {
    console.log("a[" + index + "] = " + element);
}

// 注意索引2被跳过了,因为在数组的这个位置没有项
[2, 5, ,9].forEach(logArrayElements);

// a[0] = 2
// a[1] = 5
// a[3] = 9

[2, 5,"" ,9].forEach(logArrayElements);
// a[0] = 2
// a[1] = 5
// a[2] = 
// a[3] = 9

[2, 5, undefined ,9].forEach(logArrayElements);
// a[0] = 2
// a[1] = 5
// a[2] = undefined
// a[3] = 9


let xxx;
// undefined

[2, 5, xxx ,9].forEach(logArrayElements);
// a[0] = 2
// a[1] = 5
// a[2] = undefined
// a[3] = 9

对于遍历数组的元素,js和jquery都有类似的方法,js用的是forEach而jquery用的是each,简单举例;

var arr = new Array(["b", 2, "a", 4],["c",3,"d",6]);
arr.forEach(function(item){
    alert(item);  //b, 2, a, 4和c,3,d,6
});

如果forEach里的回调函数只有一个参数则代表该集合里的元素;

复制代码
var arr = new Array(["b", 2, "a", 4],["c",3,"d",6]);
arr.forEach(function(item, i){
    alert(item+"-"+i);  //b, 2, a, 4-1和c,3,d,6-2;
  item.forEach(function(items, j){
    alert(items+"---------"+j); //b------0;2-------1;a----2;4------3;    c-----0;3-----1;d----2;6----3
  });
});
复制代码

如果forEach里有两个参数,则第一个参数为该集合里的元素,第二个参数为集合的索引;

在jquery里则不同;

var arr = new Array(["b", 2, "a", 4],["c",3,"d",6]);
$.each(arr, function(item){
    alert(item);  //0;1
});

 如果回调函数里只有一个参数时,则为集合的索引;

复制代码
var arr = new Array(["b", 2, "a", 4],["c",3,"d",6]);
$.each(arr, function(i, item){
    alert(item+"-"+i);  //b, 2, a, 4-1和c,3,d,6-2;
   $.each(item, function(j, items){
    alert(items+"---------"+j); //b------0;2-------1;a----2;4------3;    c-----0;3-----1;d----2;6----3
  });
});
复制代码

如果有两个参数,则第一个为索引,第二个该集合里的元素;

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片