如何检查Javascript中所有数组值是否为空

时间:2019-05-27 04:31:42

标签: javascript arrays

我有一个像这样的数组:

["", "", "", "1", "", ""]

我想提醒所有数组值都是blanks时,即数组是这样的:

["", "", "", "", "", ""]

我如何实现这一目标。

9 个答案:

答案 0 :(得分:10)

尝试一下

["", "", "", "", "", ""].join("").length==0

如果要删除空格,

["", "", "", "", "", ""].join("").replace(/\s/gi,'').length==0

注意:

这不适用于["", [], "", null, undefined, ""]

之类的输入

答案 1 :(得分:7)

使用every()

const allEmpty = arr => arr.every(e => e === "");
console.log(allEmpty(["", "", "", "1", "", ""]));
console.log(allEmpty(["", "", "", "", "", ""]));

答案 2 :(得分:2)

您始终可以使用基本的for循环来解决问题:

function allBlanks(arr)
{
    for (var i = 0; i < arr.length; i++)
    {
        if (arr[i] !== "") return false;
    }

    return true;
}

console.log(allBlanks(["", "", "", "1", "", ""]));
console.log(allBlanks(["", "", "", "", "", ""]));
console.log(allBlanks(["", [], "", null, undefined, ""]));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

答案 3 :(得分:1)

const isEmpty=arr=>{
  return arr.filter(it=>it.length>0).length ==0
}

arr1 = ["",""]
arr2 = ["1",""]

console.log(isEmpty(arr1))
console.log(isEmpty(arr2))

答案 4 :(得分:1)

'A'

答案 5 :(得分:1)

这也是一种更通用的方法,它将compact数组删除所有falsey的值,然后检查剩余长度:

let compact = a => a.reduce((r,c) => (!!c ? r.push(c) : null, r),[])

let isEmpty = array => compact(array).length == 0

console.log(isEmpty(["", false, 0, "", null, undefined])) // true
console.log(isEmpty(["", 1]))   // false
console.log(isEmpty(["", []]))  // false
console.log(isEmpty(["", {}]))  // false

但是,如果这是您唯一关心的用例,那么您也可以使用Array.some

let isEmpty = a => !a.some(x => x !== '')

// OR let isEmpty = a => !a.some(x => x.toString().length > 0)

console.log(isEmpty(["", "", "", "", "", ""]))
console.log(isEmpty(["", "", "1", "", "", ""]))

您也可以使用Array.reduce

let isEmpty = a => !a.reduce((r,c) => `${r}${c}`).length

console.log(isEmpty(["", "", "", "", "", ""]))
console.log(isEmpty(["", "", "1", "", "", ""]))

Array.filter

let isEmpty = a => !a.filter(x => x.toString().length).length

console.log(isEmpty(["", "", "", "", "", ""]))
console.log(isEmpty(["", "", "1", "", "", ""]))

这仅对当前输入有效。不反对将数组,对象文字等作为输入数组一部分的情况。


如果您使用的是lodash,则可能是(通过_.every_.isEmpty):

let isArrayEmpty = a => _.every(a, _.isEmpty)

console.log(isArrayEmpty(["", "", "", "", "", ""]))
console.log(isArrayEmpty(["", "", "1", "", "", ""]))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

或通过_.compact也可以删除虚假值:

let isArrayEmpty = a => !_.compact(a).length

console.log(isArrayEmpty(["", "", "", "", "", ""]))
console.log(isArrayEmpty(["", "", "1", "", "", ""]))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

答案 6 :(得分:0)

function isEmpty (arr){
  return arr.every(e => e === "")
};
let a = ["", "", "", "1", "", ""];
let b = ["", "", "", "", "", ""] 
console.log(isEmpty(a));
console.log(isEmpty(b));

答案 7 :(得分:0)

我实现了一个用于检查空数组的小功能,该功能将在所有浏览器中正常工作。

var list=["1", [], "", null, undefined, ""];
var listE=["", "", "","", "", "", ""];
var listE1=["", [], "", null, undefined, ""];

function isArrayEmpty(arr){
return arr.toString().replace(/,/g, '')=="";
}

alert(isArrayEmpty(list))
alert(isArrayEmpty(listE))
alert(isArrayEmpty(listE1))

答案 8 :(得分:0)

1)保持数组大小为n
2)找到编号。变量中为空的值表示(EmptyValues),因此每当您从数组中删除元素时,将变量EmptyValues的值更新为1。
3)检查是否(EmptyValue == n){随便给警报}