You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查数组中所有非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"]) // 返回 true
  • allSameNonNull([null, "a", "a", null, "b"]) // 返回 false
  • allSameNonNull([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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 02:12:43