簡體   English   中英

檢查數組是否有空元素

[英]Check the array has empty element or not

如何檢查數組是否有空元素? 想象一下這個數組,

var arr = [ 'a', 'b', , 'd'];

arr[2] undefined 我想檢查一下。 如果元素有空元素,則返回“真”或返回假。 也許像這樣,

function hasEmptyElement(array){
    for (var i=0; i<array.length; i++){
        if (typeof arr[i] == 'undefined'){
          return true; 
          // and then ?
          // should I use double for loop or helper variable?
        }
    }
}

我很困惑我該怎么做。 請高手幫幫我。

從 ES2016 開始,您應該使用Array.prototype.includes

const array = ["a", "b", , "d"];
array.includes(undefined); // true

(你不需要寫undefined ,但這可以讓你更清楚發生了什么。)

請注意,此方法將值undefined插槽和插槽視為相同,盡管它們不是。 如果您還需要區分這兩種情況,從 ES2017 開始,您可以使用Object.values使以下表達式為true如果數組中有空槽:

Object.values(array).length !== array.length; // true

首先,注意空插槽和具有未定義值的插槽之間的區別:

var arr = [/*empty slot*/, undefined];
Object.keys(arr); // ["1"] but not "0"
"0" in arr; // false
"1" in arr; // true

ES5 數組方法跳過空槽。 ES6 [].includes沒有。

這意味着你可以使用

arr.includes(undefined); // has empty slot OR contains undefined value
arr.indexOf(undefined) > -1; // contains undefined value

如果您只想測試是否有空槽,您可以使用for循環手動迭代並檢查是否存在 0 和數組長度之間的所有索引,例如使用in運算符。

(function() {
  for(var i=0; i<arr.length; ++i) if(!(i in arr)) return true;
  return false;
})(); // has empty slot

或者您也可以使用 ES5 數組方法並檢查它們是否跳過了索引。

var n = 0;
arr.some((_,i) => i !== n++); // has empty slot

你可以這樣做:

function hasEmptyElement(array){
    for (var i=0; i<array.length; i++){
        if (!(i in array)) {
            return true;
        }
    }
    return false;
}

這個實現的要點是它在[1,,3][1, undefined, 3]之間有所不同

試試

var hasAnyEmptyElement = arr.filter(function(val){ return (typeof val) != "undefined" }).length != arr.length;

演示

 var arr = [1,2]; arr[4] = 2; var hasAnyEmptyElement = arr.filter(function(val){ return (typeof val) != "undefined" }).length != arr.length; alert(hasAnyEmptyElement);

你也可以使用Array.prototype.findIndex()

 var arr = ['a', 'b', , 'd']; document.write(arr.findIndex(e => e === undefined) > -1);

var temp = arr.filter(item => item);

這將為您提供一個包含以下元素的新數組: ["a", "b", "d"]

上述解決方案將有助於刪除空值和空值。

使用 set 的簡單實現

var arr = [ 'a', 'b', , 'd'];
// Using Set from es6
var arraySet = new Set(arr)
arraySet.has(undefined) // returns true

謝謝!

你可以這樣試試:

 var arr = [ 'a', 'b',, 'd']; function myfunc(arr) { for(var i=0; i<arr.length; i++) { if (!(i in arr)) return false; } return true; } alert( myfunc(arr));

對於 ES5- 你可以做

var arr = [ 'a', 'b', , 'd'];
arr.filter(function() { return true }).length === arr.length

如果有undefined那將返回false

ES2015 檢查包括

為了簡單起見,您可以使用以下比較來實現相同的目標。

function hasEmptyElement(array){
   for(var i=0;i<array.length;i++){
       if(my_arr[i] === "")   
          return false;
   }
   return true;
}
`Check null/undefined values in Array`

function checkNullValue(a) {
                    if (typeof (a) == 'undefined' || a === null) {
                        return false;
                    } else {
                        return true;
                    }

     }

    var arrayMonthVal = ['1','2',,'6','null', '8'];

    var pass = arrayMonthVal.some(checkNullValue);

觀察:輸入數組無效。 它應該是var arr = [ 'a', 'b', '', 'd'];

現在,您可以使用Array.some()方法檢查數組是否包含空值。

演示

 var arr = [ 'a', 'b', '', 'd']; console.log(arr.some(item =>;item))

我最近需要知道給定的數組元素是否為空,這個頁面幫助我得出以下解決方案:

/** Determine if an array element is empty.
 *  @param {*[]} arr
 *  @param {number} [i] If not provided, check entire arr for empty.
 *  @return {boolean}
 */
const hasEmpty = (arr, i) => 0<=i 
  ? !arr.some((_, j) => j==i) 
  : Object.values(arr).length!==arr.length;

你好試試這個....

 if (typeof arr[i] == 'NULL'){
      return true; 
}

希望這可以奏效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM