模块 6 · 第 1 课(共 4)课程中的21/32~10 min
模块课程(1/4)
地图和过滤器
两个基本方法:它们将数组转换为新数组,而不改变原始数组。
map:转换每个元素
它接受一个函数,将其应用于每个元素,并返回一个相同长度的数组 与结果。
JS
const numeri = [1, 2, 3, 4];
const doppi = numeri.map((n) => n * 2);
// [2, 4, 6, 8]
const stringhe = numeri.map((n) => `n=${n}`);
// ['n=1', 'n=2', 'n=3', 'n=4']原来的保持不变:
JS
numeri; // [1, 2, 3, 4] ← unchangedfilter:选择一个子集
它需要一个谓词(返回 true/false 的函数)。它只保留以下元素 谓词为真。
JS
const numeri = [1, 2, 3, 4, 5, 6];
const pari = numeri.filter((n) => n % 2 === 0);
// [2, 4, 6]
const grandi = numeri.filter((n) => n > 3);
// [4, 5, 6]结合两者
经典管道:过滤,然后转换。
JS
const prezzi = [12, 5, 100, 30, 7];
const grandiDoppi = prezzi.filter((p) => p > 10).map((p) => p * 2);
// [24, 200, 60]尝试一下
锻炼#js.m6.l1.e1
尝试:0加载中...
定义“vat(prices, rates)”:给定一个数字数组和一个费率(例如 0.22),返回一个包含增值税增加的价格的数组。使用地图。
正在加载编辑器...
显示提示
价格.map((p) => p * (1 + 利率))
3 次尝试后可用的解决方案
复习练习
锻炼#js.m6.l1.e2
尝试:0加载中...
定义`adultNames(people)`:您接收一个对象数组{name,age}并返回年龄>=18的人的姓名数组。使用filter+map。
正在加载编辑器...
显示提示
链:.filter(...).map((p) => p.name)
3 次尝试后可用的解决方案