JavaScript Program to Remove Empty Strings from Array Without Loop

Given an array with values and empty strings, our task is to remove empty strings from an array while keeping a record of the removed elements without using explicit loops.

Example:

Input: Array = ["hello", "", "world", "", "!", " "];
Output: Cleaned Array: [ 'hello', 'world', '!', ' ' ] Removed Elements: [ '', '' ]

Below are the approaches to remove empty strings from the array while keeping a record Without Loop in JavaScript:

Table of Content

  • Using reduce
  • Using filter
  • Using flatMap

Using reduce

In this approach, we use reduce to iterate through the array, accumulate non-empty strings in one array, and collect removed elements in another array.

Example: The below code example uses reduce to remove empty strings from array

JavaScript
function removeEmptyStrings(arr) {
    return arr
        .reduce((acc, val) => {
            if (val !== '') {
                acc.cleanedArray.push(val);
            } else {
                acc.removedElements.push(val);
            }
            return acc;
        }, { cleanedArray: [], removedElements: [] });
}

let inputArray = ["hello", "", "world", "", "!", " "];
let result = removeEmptyStrings(inputArray);

console.log("Cleaned Array:", result.cleanedArray);
console.log("Removed Elements:", result.removedElements);

Output
Cleaned Array: [ 'hello', 'world', '!', ' ' ]
Removed Elements: [ '', '' ]

Time complexity: O(n)

Auxiliary Space: O(n)

Using filter

In this approach we use filter to create a cleaned array of non-empty strings and another filter to create an array of empty strings.

Example: The below code example is a practical implementation to remove empty strings from array using filter with map.

JavaScript
function removeStrings(arr) 
{
    const cleanedArray = arr
        .filter(val => val !== '');
    const removedElements = arr
        .filter(val => val === '');
    return { cleanedArray, removedElements };
}

let inputArray2 = ["hello", "", "world", "", "!", " "];
let result2 = removeStrings(inputArray2);

console.log("Cleaned Array:", result2.cleanedArray);
console.log("Removed Elements:", result2.removedElements);

Output
Cleaned Array: [ 'hello', 'world', '!', ' ' ]
Removed Elements: [ '', '' ]

Time Complexity: O(n)

Auxiliary Space: O(n)

Using flatMap

In this approach, we use flatMap to create a combined operation of filtering and mapping, where we can conditionally return values or empty arrays, effectively achieving the desired result.

Example: The below code example uses flatMap to remove empty strings from the array:

JavaScript
function removeEmptyStringsFlatMap(arr) {
    const cleanedArray = arr.flatMap(val => val !== '' ? [val] : []);
    const removedElements = arr.flatMap(val => val === '' ? [val] : []);
    return { cleanedArray, removedElements };
}

let inputArray3 = ["hello", "", "world", "", "!", " "];
let result3 = removeEmptyStringsFlatMap(inputArray3);

console.log("Cleaned Array:", result3.cleanedArray);
console.log("Removed Elements:", result3.removedElements);

Output
Cleaned Array: [ 'hello', 'world', '!', ' ' ]
Removed Elements: [ '', '' ]

Time Complexity: O(n)

Auxiliary Space: O(n)



Contact Us