every()判断数组所有元素是否大于零:全大于0返回true,含≤0或非数字则返回false;空数组默认返回true;需结合typeof和isFinite校验类型与有效性。

用 every 判断数组中所有元素是否大于零,核心是传入一个返回布尔值的回调函数,只要有一个元素 ≤ 0,就立即返回 false;全部 > 0 才返回 true。
基本写法
直接对数组调用 every(),回调中判断每个元素是否严格大于 0:
-
[1, 2, 3].every(x => x > 0)→true -
[1, -2, 3].every(x => x > 0)→false -
[0, 1, 2].every(x => x > 0)→false(0 不满足“大于零”) -
[].every(x => x > 0)→true(空数组默认全满足)
注意边界情况
“大于零”不包含零和负数,也要小心非数字类型:
-
0、-0、NaN、null、undefined、字符串如"0"或"abc"都不会大于 0 - 如果数组可能含非数字,建议先校验类型:
arr.every(x => typeof x === 'number' && x > 0) - 字符串数字需转为数值再比较,否则
"1" > 0虽为true,但属于隐式转换,不推荐依赖
结合实际使用场景
比如验证用户输入的多个价格是否都有效(正数):
立即学习“Java免费学习笔记(深入)”;
const prices = [29.99, 15.5, 100]; const allPositive = prices.every(price => typeof price === 'number' && isFinite(price) && price > 0); // true —— 确保是有限数字且为正
若需报错提示,可封装成函数:
function allGreaterThanZero(arr) { return Array.isArray(arr) && arr.every(x => typeof x === 'number' && x > 0); }- 调用
allGreaterThanZero([1, 2, 3])返回true,allGreaterThanZero([1, 0, 3])返回false
别和 some 混淆
every 是“全都要满足”,some 是“至少一个满足”。想确认“有没有非正数”,用 some(x => x 更直观,但目标是“全部大于零”,<code>every 更语义准确、逻辑简洁。


















