Please enable java script to visit.
NOTEBOOK
HOMEPHP / MySQLJS / HTMLWXappPythonC++Blender其他
JS 常用遍历方法 forEach / for in / for of 的区别 - NOTEBOOK
JS 常用遍历方法 forEach / for in / for of 的区别
JS / HTML
Posted on 2023-02-28
摘要 : forEach / for in / for of 的区别。遍历的过程中可以修改数组内容、长度,让遍历继续。
Array some() 方法:用于检测数组中的元素是否满足指定条件(函数提供)。会依次执行数组的每个元素:如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false。
Array reduce() 方法:reduce 方法会遍历数组,可以对比数组里属性的对象。
❱ jQuery 对div子对象的遍历

$('#parent').children().each(function(index,item) {
console.log($(this).val());
});



❱ some() 方法用于检测数组中的元素是否满足指定条件

some() 方法会依次执行数组的每个元素:
如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
注意: some() 不会对空数组进行检测。
注意: some() 不会改变原始数组。
var ages = [4, 12, 16, 20];
var result = ages.some(function(value,index) { // 值,索引
return value>18;
});
console.log(result);

//true;



❱ reduce 方法会遍历数组

reduce 方法会遍历数组,传入两个参数:一个累加器 acc 和当前元素 cur,在遍历过程中,每一次将当前元素和累加器进行比较,如果当前元素的 dis 小于累加器的 dis,就将当前元素作为新的累加器,最终返回累加器。
在本例中,最终得到的累加器就是属性 dis 最小的对象。
const arr = [
{x: 80, y: 28, dis: 4.242640687119285},
{x: 80, y: 29, dis: 3.605551275463989},
{x: 80, y: 30, dis: 3.1622776601683795},
{x: 80, y: 31, dis: 3},
{x: 80, y: 32, dis: 3.1622776601683795},
{x: 80, y: 33, dis: 3.605551275463989},
{x: 80, y: 34, dis: 4.242640687119285}
];
const minDisObj = arr.reduce((acc, cur) => cur.dis < acc.dis ? cur : acc);
console.log(minDisObj); // 输出 {x: 80, y: 31, dis: 3}


// 等同
const minDisObj = arr.reduce(function (acc, cur){
if(cur.dis<acc.dis){
return cur;
}else{
return acc;
}
});





❱ 数组、对象的遍历

❱ 数据

a = ['david','john','tommy','jackey'];


❱ forEach

使用foreach遍历数组的话,使用break不能中断循环,使用return也不能返回到外层函数。
a.foreach(function(name,index){
console.log('第'+(index+1)+'个是'+name);
});

// 第1个是david
// 第2个是john
// 第3个是tommy
//第4个是jackey



❱ for of

它可以正确响应break、continue和return语句
for..of适用遍历数/数组对象/字符串/map/set等拥有迭代器对象的集合.但是不能遍历对象
var i=1;
for(var value of a){
console.log('第'+(i++)+'个是'+value);
}
// 第1个是david
// 第2个是john
// 第3个是tommy
//第4个是jackey



❱ for in

index索引为字符串型数字,不能直接进行几何运算
遍历顺序有可能不是按照实际数组的内部顺序
for in更适合遍历对象,不要使用for in遍历数组。
例如:myObject={a:1,b:2,c:3}
for(var index in a){
console.log('第'+(index+1)+'个是'+a[index]);
}
// 第01个是david
// 第11个是john
// 第21个是tommy
//第31个是jackey