some只要有一个元素满足条件就返回true,否则false;every必须所有元素都满足才返回true,否则false;空数组调用some返回false、every返回true。
some 只要有一个元素满足条件就返回 true,否则返回 false;every 必须所有元素都满足条件才返回 true,否则返回 false。
遍历数组,遇到第一个让回调函数返回真值的元素就立即停止,并返回 true。如果全程没找到,返回 false。
[1, 2, 3, 4].some(x => x > 3) → true(因为 4 > 3)遍历数组,遇到第一个让回调函数返回假值的元素就立即停止,并返回 false。如果所有元素都满足,返回 true。
[2, 4, 6].every(x => x % 2 === 0) →
true;[2, 3, 4].every(x => x % 2 === 0) → false
空数组调用 some 总是返回 false(没找到任何一个满足的);调用 every 总是返回 true(因为没有反例,逻辑上“全满足”成立)。
[].some(() => true) → false
[].every(() => false) → true
两者都是纯函数:只读取数组、不修改它,也不生成新数组。返回的永远是 true 或 false,不是元素本身,也不是索引。
find、filter 混淆——后两者返回元素或新数组find;需要全部匹配的结果,用 filter
基本上就这些。记住口诀:some 是“有一个就行”,every 是“一个都不能少”。