1.首先在学习这两种方法之前要明白过滤器函数filter()的使用
(1)首先我们先创建一个数组
const arr = [
{ id: 1, name: "宝马", state: true, pirce: 100, count: 1 },
{ id: 1, name: "奥迪", state: false, pirce: 800, count: 2 },
{ id: 1, name: "奔驰", state: true, pirce: 200, count: 3 },
];
(2) 将上述数组中state为true的内容筛选出来
const arr = [
{ id: 1, name: "宝马", state: true, pirce: 100, count: 1 },
{ id: 1, name: "奥迪", state: false, pirce: 800, count: 2 },
{ id: 1, name: "奔驰", state: true, pirce: 200, count: 3 },
];
//使用filter()函数进行筛选
const arr01 = arr.filter((item) => item.state === true);
console.log(arr01);
(3)这个时候控制台输出的结果为
这个时候的你需要的内容就被过滤出来了
2 接下来就到我们今天的主题了如何将过滤出来的数组中state等于true的内容和数组中的count值进行相乘,并且累加出来结果。
(1) 首先使用forEach方法
const arr = [
{ id: 1, name: "宝马", state: true, pirce: 100, count: 1 },
{ id: 1, name: "奥迪", state: false, pirce: 800, count: 2 },
{ id: 1, name: "奔驰", state: true, pirce: 200, count: 3 },
];
//使用filter()函数进行筛选
let amt = 0
arr.filter((item) => item.state).forEach(item=>{
amt += item.pirce * item.count
});
console.log(amt)
这个时候的控制台就会输出700,这样我们的目的就达到了
(2)其次使用reduce方法
const arr = [
{ id: 1, name: "宝马", state: true, pirce: 100, count: 1 },
{ id: 1, name: "奥迪", state: false, pirce: 800, count: 2 },
{ id: 1, name: "奔驰", state: true, pirce: 200, count: 3 },
];
//使用filter()函数进行筛选
//reduce函数的使用方法
//arr.filter((item)=>item.state).reduce((累加的结果,循环项)=>{},初始值)
let amt = 0
const result = arr
.filter((item) => item.state === true)
.reduce((amt, item) => {
return (amt += item.pirce * item.count);
}, 0);
console.log(result);
同时我们的控制台输出的结果还是700