How can I check JavaScript arrays for empty strings?

前端 未结 16 2034
面向向阳花
面向向阳花 2020-12-15 07:26

I need to check if array contains at least one empty elements. If any of the one element is empty then it will return false.

Example:

var my_arr = ne         


        
相关标签:
16条回答
  • 2020-12-15 08:17

    One line solution to check if string have empty element

    let emptyStrings = strArray.filter(str => str.trim().length <= 0);
    

    let strArray = ['str1', '', 'str2', ' ', 'str3', '    ']
    let emptyStrings = strArray.filter(str => str.trim().length <= 0);
    console.log(emptyStrings)

    One line solution to get non-empty strings from an array

    let nonEmptyStrings = strArray.filter(str => str.trim().length > 0);
    

    let strArray = ['str1', '', 'str2', ' ', 'str3', '    ']
    let nonEmptyStrings = strArray.filter(str => str.trim().length > 0);
    console.log(nonEmptyStrings)

    0 讨论(0)
  • 2020-12-15 08:19

    If you only care about empty strings then this will do it:

    const arr = ["hi","hello","","jj"]
    ('' in arr) //returns false
    

    the last line checks if an empty string was found in the array.

    0 讨论(0)
  • 2020-12-15 08:24

    Using a "higher order function" like filter instead of looping can sometimes make for faster, safer, and more readable code. Here, you could filter the array to remove items that are not the empty string, then check the length of the resultant array.

    Basic JavaScript

    var my_arr = ["", "hi", ""]
    
    // only keep items that are the empty string
    new_arr = my_arr.filter(function(item) {
      return item === ""
    })
    
    // if filtered array is not empty, there are empty strings
    console.log(new_arr);
    console.log(new_arr.length === 0);

    Modern Javascript: One-liner

    var my_arr = ["", "hi", ""]
    var result = my_arr.filter(item => item === "").length === 0
    console.log(result);

    A note about performance

    Looping is likely faster in this case, since you can stop looping as soon as you find an empty string. I might still choose to use filter for code succinctness and readability, but either strategy is defensible.

    If you needed to loop over all the elements in the array, however-- perhaps to check if every item is the empty string-- filter would likely be much faster than a for loop!

    0 讨论(0)
  • 2020-12-15 08:26

    You could do a simple help method for this:

    function hasEmptyValues(ary) {
        var l = ary.length,
            i = 0;
    
        for (i = 0; i < l; i += 1) {
            if (!ary[i]) {
                return false;
            }
        }
    
        return true;
    }
    
    //check for empty
    var isEmpty = hasEmptyValues(myArray);
    

    EDIT: This checks for false, undefined, NaN, null, "" and 0.

    EDIT2: Misread the true/false expectation.

    ..fredrik

    0 讨论(0)
提交回复
热议问题