【问题标题】:Trying to find if array is full or not试图查找数组是否已满
【发布时间】:2010-02-10 15:34:35
【问题描述】:

我正在使用 JQuery 来确定先前构建的具有确定数量的索引的数组是否已满。 创建后,数组如下所示:

,,,,,,

我要做的就是找出每个职位是否都被填补了。

所以基本上,我正在尝试测试是否且仅当

[x,x,x,x,x,x]

例如,如果

[x,x,x,,x,x]  or if [x,,,,,] //return false, wrong...

非常感谢。

【问题讨论】:

    标签: javascript jquery arrays


    【解决方案1】:

    您不需要任何特定的 jQuery 东西来读取数组的大小。只是 vanilla javascript 有你需要的东西。

    var arrayMaxValues = 4;
    var testArray = [1,2,3,4];
    
    if ( testArray.length == arrayMaxValues )
    {
      alert( 'Array is full!' );
    }
    else if ( testArray.length > arrayMaxValues )
    {
      alert( 'Array is overstuffed!' );
    } else {
      alert( 'There's plenty of room!' );
    }
    

    编辑

    啊,你重新输入了你的问题。那么,您想查看它们的数组是否有零值或未定义值?

    function isArrayFull( arr )
    {
      for ( var i = 0, l = arr.length; i < l; i++ )
      {
        if ( 'undefined' == typeof arr[i] || null === arr[i] )
        {
          return false
        }
      }
      return true;
    }
    

    【讨论】:

    • 我认为他所追求的更像是试图弄清楚数组中的任何值是 null 还是空字符串。
    • 我认为你错了,因为数组的长度总是等于arrayMaxValues。我不是想找出它的长度并进行比较,但是如果对于每个索引条目,都有一个关联的值 != to ''。
    • 如果你打算使用 jQuery 语法,你可以使用 $.each(arr, function(index, value) { // logic here });也是。
    【解决方案2】:

    如果你用空值填充你的初始数组,比如:

    const arr = Array(9).fill(null);
    

    然后你可以像这样使用some()every()

    // check if a null doesn't exist
    !arr.some(element => element === null)
    
    // check if every element is not null
    arr.every(element => element !== null)
    

    使用任何你喜欢的,因为当找到空值时它们都会中断循环。

    【讨论】:

      【解决方案3】:

      我知道这与 Peter Bailey 的功能相同,但我只想分享它,因为它是一种使用内置数组过滤功能的不同方法。

      因此,由于整个数组具有预定长度,您可以将其针对“未定义”和 null 进行过滤并比较长度,如下所示:

      function isArrayFull(arr) {
         return arr.length === arr.filter(function(o) {
           return typeof o !== 'undefined' ||  o !== null;
         }).length;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-07
        • 2020-03-11
        • 2021-03-15
        • 2011-10-30
        • 1970-01-01
        • 2012-12-28
        相关资源
        最近更新 更多