如何检查数组中所有非null字符串是否全部相等?
检查列表中非null字符串是否全部相同
这里有几种简洁直观的实现方式,比你提到的两种思路更精炼:
方法1:利用Set去重特性
过滤掉列表中的null值后,将剩余元素存入Set(自动去重),只要Set的大小≤1,就说明所有非null字符串完全相同(或没有非null元素):
function allSameNonNull(arr) { const nonNullItems = arr.filter(item => item !== null); return new Set(nonNullItems).size <= 1; }
测试验证
allSameNonNull([null, "a", "a", null, "a"]) // 返回 trueallSameNonNull([null, "a", "a", null, "b"]) // 返回 falseallSameNonNull([null, null, null]) // 返回 true(无有效字符串,默认符合条件)
方法2:单次遍历优化(效率更高)
先找到第一个非null元素,再遍历整个列表,检查所有元素要么是null,要么等于这个第一个非null元素:
function allSameNonNull(arr) { const firstValid = arr.find(item => item !== null); // 全为null时firstValid为undefined,直接返回true return arr.every(item => item === null || item === firstValid); }
这种方式只需要最多两次遍历(find找到第一个元素后停止,every遇到不符合项立即停止),相比先过滤再判断的方式,在大列表场景下效率更高。
边界场景覆盖
- 空列表
[]:返回true - 仅单个非null元素
["x"]:返回true - 混合null和同一字符串:返回
true
内容的提问来源于stack exchange,提问作者Philipp
相关产品推荐
相关产品推荐

