代码之家  ›  专栏  ›  技术社区  ›  Atal Shrivastava

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

  •  0
  • Atal Shrivastava  · 技术社区  · 7 年前

    我有一个数组,比如:

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

    我想在所有数组值都被删除时发出警报 blanks ,即当数组如下所示:

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

    我怎样才能做到这一点。

    3 回复  |  直到 7 年前
        1
  •  11
  •   Srinivasan Sekar    7 年前

    试试这个,

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

    如果要删除空格,

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

    注:

    这对像这样的输入不起作用 ["", [], "", null, undefined, ""]

        2
  •  11
  •   Vivekanand Panda    7 年前

    使用 every() :

    const allEmpty = arr => arr.every(e => e === "");
    console.log(allEmpty(["", "", "", "1", "", ""]));
    console.log(allEmpty(["", "", "", "", "", ""]));
        3
  •  4
  •   Shidersz    7 年前

    你可以使用基本的 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;}
        4
  •  2
  •   Akrion    7 年前

    这里还有一个更通用的方法 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", "", "", ""]))
    <脚本src=”https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js“></script>
        5
  •  1
  •   Naor Tedgi    7 年前

    const isEmpty=arr=>{
      return arr.filter(it=>it.length>0).length ==0
    }
    
    arr1 = ["",""]
    arr2 = ["1",""]
    
    console.log(isEmpty(arr1))
    console.log(isEmpty(arr2))
        6
  •  1
  •   yaswanth    7 年前
    var arr1 = ["", "", "", "1", "", ""];
    var arr2 = ["", "", "", "", "", ""];
    
    function checkArrValEmpty(arr) {
      let count = 0;
      for(let i = 0; i < arr.length; i++) {
        if(arr[i].trim().length === 0) {`enter code here`
          count++;
        }
      }
      return count === arr.length
    }
    
    console.log(checkArrValEmpty(arr2));
    console.log(checkArrValEmpty(arr1));
    
        7
  •  1
  •   Vivekanand Panda    7 年前

    function isEmpty (arr){
      return arr.every(e => e === "")
    };
    let a = ["", "", "", "1", "", ""];
    let b = ["", "", "", "", "", ""] 
    console.log(isEmpty(a));
    console.log(isEmpty(b));
        8
  •  1
  •   Badri Chorapalli    7 年前

    我实现了一个检查空数组的小功能,它可以在所有浏览器中运行。

    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))
        9
  •  1
  •   sagar saini    7 年前

    1) 将数组的大小保持为长度
    2) 在数组中找到空值的数量,并将其存储在一个变量中(EmptyValues)
    3) 检查是否(EmptyValue==length){Give Alert which your want}

    function checkBlankvalues(arr){
    var emptyValues=0,length=arr.length;
    //for finding empty vales in array till now
    for(var i=0;i<arr.length;i++)
    { 
       if(arr[i]="")
       {
         emptyValues++;
       }
    }
    if(length==emptyValue)
    {
     //alert("array is blank");
    }
    }
    
        10
  •  1
  •   MMMahdy-PAPION    4 年前
    TL;DR(快速和简单)
    [].some(Boolean)  //  Empty : false   |   Not Empty : true
    
    解释

    本机功能的混合, Boolean 具有 .some() .filter() 或者使用 .join() 可以返回预期结果:

    var a=['','','','',''],   // Empty
        b=['','','x','',''];  // Not Empty
    
    // Is Not Empty?
    
    // #1
    console.log( a.some(Boolean) ); // false
    console.log( b.some(Boolean) ); // true
    
    // #2
    console.log( a.filter(Boolean).length ); // = 0
    console.log( b.filter(Boolean).length ); // != 0
    
    // #3
    console.log( a.join('')!='' ); // false
    console.log( b.join('')!='' ); // true

    还有一个用户定义的功能:

    var a=['','','','',''],   // Empty
        b=['','','x','',''];  // Not Empty
            
    function isArrayEmpty(a) { 
      for (var i = 0; i < a.length; i++) 
        if (a[i]) return false;
      return true;
    }
    
    console.log( isArrayEmpty(a) ); // true
    console.log( isArrayEmpty(b) ); // false

    但是关于 表演 :

    1. .some(Boolean) 约4000万次行动/秒 (每秒操作数)
    2. isArrayEmpty() 约3600万次行动/秒 (大约慢10%)
    3. .filter(Boolean).length 约900万次行动/秒 (大约慢75%)
    4. .join('')!='' 约400万次行动/秒 (大约慢90%)

    注(1): 使用 Arrow functions (a)=>a

    注(2): 当我们确定所有数组项都是 一串 .关于其他 falsy s( null false ...) 项目,选项#3(加入)将不起作用。