JS中的各种遍历( forEach、filter、map、some、every、find、findIndex、reduce)

JavaScript中的遍历

forEach、filter、map、some、every、find、findIndex、reduce

有如下一排同学

let students = [
  { id: 001, name: "张三", weight: 50 },
  { id: 002, name: "李四", weight: 48 },
  { id: 003, name: "王五", weight: 57 },
  { id: 004, name: "赵六", weight: 52 },
  { id: 005, name: "孙七", weight: 46 }
];

他们的体重记录为一个数组

let w = [50,48,57,52,46]

批量操作

他们一起吃了饭后,体重增加了
使用forEach方法

students.forEach(student => {
  student.weight += 2;
});

使用map方法也可以

students.map(student => {
  student.weight += 2;
});

map还可以把重量更新后返回

w = students.map(student => {
  return (student.weight += 2);
});
console.log(w); // [ 52, 50, 59, 54, 48 ]

forEach和map的最大区别就在于,forEach没有返回值

筛选过滤

使用filter选出体重大于50的让他们去锻炼

let run = students.filter(student => {
  return student.weight > 50;
});
console.log(run); 
/*
[
  { id: 3, name: '王五', weight: 57 },
  { id: 4, name: '赵六', weight: 52 }
]
*/

有符合

有没有体重小于50的
当只需要判断数组中有没有符合条件的时候(一个就行) 就需要我们的some方法登场了
只要找到一个符合条件的,就回来报告true 所以并不会全部遍历,不做多余的活(性能优良)

let s = students.some(student => {
  return student.weight < 50;
});
console.log(s);  // true

全符合

判断体重是否全部小于50
every对每一个元素执行一个callback,直到它找到一个使 callback 返回 false的元素,就返回false,直到遍历完成也没有返回false的话,就返回true

let s = students.every(student => {
  return student.weight < 50;
});
console.log(s);  // false

返回一个符合的

找一个体重大于55的同学
可使用find
find和some很类似,都是寻找符合条件的,有一个就可以 不过some返回(true),而find则(返回第一个符合条件的对象)

let s = students.find(student => {
    return student.weight > 55
})
console.log(s);  // { id: 3, name: '王五', weight: 57 }

返回序号

找出id为003的同学的排列下标
findIndex返回第一个符合条件的索引号

let i = students.findIndex(student => {
    return student.id === 003
})
console.log(i);  // 2

递归累加

所有同学体重加起来多少呢

reduce()方法接收一个回调函数作为第一个参数,回调函数又接受四个参数,分别是;
1、previousValue =>初始值或上一次回调函数叠加的值;
2、currentValue => 本次回调(循环)将要执行的值;
3、index=>“currentValue”的索引值;
4、arr => 数组本身;
reduce()方法返回的是最后一次调用回调函数的返回值;

// 对象数组
let sum = students.reduce((sum, student) => {
  return student.weight + sum;
}, 0);
console.log(sum);  // 253
// 数组
let sum = w.reduce((sum, weight) => {
  return weight + sum;
}, 0);
console.log(sum);  // 253

以上就是js的常用遍历方法。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值