for循环应该这么用

从最开始学的for循环的遍历方法,再到后来连续不断出来的各种循环遍历方法,其实最大的区别就是应用的场景不同。而我们需要知道的是,什么情况下用哪一种方法合适


下面我就以例子介绍每种方法再什么情况下用最合适:

1
2
3
4
5
6
7
8
let arr = [
{id:"1",money:10},
{id:"2",money:30},
{id:"3",money:40},
{id:"4",money:50},
{id:"5",money:60},
{id:"6",money:80}
];

1.给每一组数据的money都增大一点

这个时候可用到forEach方法:

1
arr.forEach(item => { item.money += 10 }));

map方法它说它也可以:

1
arr.map(item => { item.money += 10 });

map补充说,我还可以给你把money统计成一个新的数组给你;

1
2
let money = arr.map(item => { return item.money += 10 });
//[20,40,50,60,70,90]

###forEachmap最大的区别就在于forEach没有返回值。

2.只要这组数据中money大于50的数据(筛选)

从题目看就知道,筛选这种事一般都是filter来做的:

1
2
let filones = arr.filter(item => { return item.money>=50 });
//[{id:"4",money:50},{id:"5",money:60},{id:"6",money:80}]

3.这组数据中有money大于50的么 (有符合)

这题意思就是,这组数据只要有money大于50的就符合,这个时候some就很有用了:

1
2
let flag = arr.some(item => { return item.money>50 });
//true

some它会去遍历查找满足条件的,当第一条就符合的时候,就会立即返回告诉你有符合的了,后面的就不用检查了。

4.这组数据中money全是大于50的么?

这个时候every就想知道这组数据中难道每条都大于50?

1
2
let flag = arr.every(item => {return item.money>50 })
//false

当每条数据都要去检查的时候,像这样会非常耗费性能;我们可以考虑反向检查,通过some检查是否有小于50的数据,再取反。

1
2
let flag = !arr.some(item => {return item.money<50 });
//false

5.这组数据money总和是多少呢

我们可以先通过用mapmoney取出来,再用reduce计算其总和。

1
2
let moneys = arr.map(item => {return item.money });
let sum = moneys.reduce((sum,moneys)=>{ return moneys+sum},0)

打赏
  • © 2019-2022 YmTonny
  • 访问量: 独立访客:

请我喝杯咖啡吧~

支付宝
微信