首页 > 解决方案 > 在 JavaScript 或 jQuery 中识别具有多个空值但具有单个数字类型值/元素的数组

问题描述

Input : var arr = [2,null,null,null];
Output : true

Input : var arr = [null,null,5.6,null];
Output : true

Input : var arr = [2,null,null,5.6];
Output : false

Input : var arr = [null,null,null,null];
Output : false

需要一种有效的方法来识别具有一个有效数字元素的数组,其余的都可以为空。

nullNumber类型元素只是我们在这里考虑的两种类型。

标签: javascriptjquery

解决方案


这里唯一的效率方面是早期的错误退出。真正的出口必须比较所有的值。

let test_array = arr => {
   let numbers = 0;
   let length = arr.length;
   for(let i = 0; i < length; ++i) {
      if(arr[i] !== null) ++numbers;
      if(numbers > 1) return false;
   }
   return (numbers == 1);
}

只有当你有长数组时,寻找效率才有意义。否则下面的一个班轮就足够了

arr.reduce((r, v) => r += (v !== null), 0) == 1

推荐阅读