跳转到主要内容
模块 6 · 第 3 课(共 4)课程中的23/32~10 min
模块课程(3/4)

找到、一些、每一个

三种在数组中搜索的紧凑方法,无需手动编写循环。

find:第一个匹配的

JS
const utenti = [
  { nome: 'Anna', eta: 30 },
  { nome: 'Luca', eta: 12 },
  { nome: 'Sara', eta: 18 },
];

utenti.find((u) => u.eta >= 18);
// { nome: 'Anna', eta: 30 }

utenti.find((u) => u.nome === 'Marco');
// undefined  ← if none matches

findIndex 变体:返回索引(或 -1)。

some:至少一个

JS
const nums = [1, 2, 3, 4, 5];

nums.some((n) => n > 4); // true
nums.some((n) => n > 100); // false

[].some(() => true); // false  ← on an empty array it is always false

every:全部

JS
const nums = [1, 2, 3, 4, 5];

nums.every((n) => n > 0); // true
nums.every((n) => n > 2); // false

[].every(() => false); // true  ← on an empty array it is always true!

空数组上 some 和 every 的不对称是有意为之且逻辑上一致 “存在”(∃) 和“对于所有”(∀) 逻辑运算符。

尝试一下

锻炼#js.m6.l3.e1
尝试:0加载中...

定义“firstAdult(users)”:给定一个 { name,age } 数组,返回第一个年龄 >= 18 的人的姓名,如果没有则返回 null。使用查找。

正在加载编辑器...
显示提示

用户.find(...);如果找到则返回 u.name,否则返回 null。

3 次尝试后可用的解决方案

复习练习

锻炼#js.m6.l3.e2
尝试:0加载中...

定义“allPositive(nums)”:如果 nums 的所有元素都 > 0(并且数组不为空),则返回 true,否则返回 false。使用 every + 长度检查。

正在加载编辑器...
显示提示

长度 > 0 && nums.every(n => n > 0)

3 次尝试后可用的解决方案