JJUPIN/SIL - How to remove empty/null elements from an array?

Błażej O_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 18, 2015

Hi there.

I'm struggling to remove null/empty elements from a string array. I can't find a way to remove such elements without sorting or converting to unique set. I will appreciate any hints how can I do the above operation.

Example code:

string source_string = "testelem1,,testelem2,,,testelem3,testelem2";

string[] my_array = split(source_string, ",");

I have tried :

  •     deleteElement(my_array, "")
  •     deleteElement(my_array, "null")
  •     deleteElement(my_array, null)

None of the above worked.

 

So far the I have found only two possibilities, both messing up order of elements in original array thus not fitting my needs:

  1. sort array, loop check 0th element for isNull() and remove it with deleteElementAt if true
  2. convert to set of unique elements by arrayToSet, check 0th element if isNull() and remove it with deleteElementAt if true.

2 answers

1 accepted

2 votes
Answer accepted
FlorinM
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 18, 2015

Hi Blazej,

deleteElement actually works, but stops on first occurrence, so you'll need something like this:

number sz;
do {
    sz = size(arr);
    arr = deleteElement(arr, "");
} while(sz != size(arr));

Another option would be to use arrayDiff

arr = arrayDiff(arr, {""});

Note: your "my_array" is declared as string not array.

Hope this helps!

Błażej O_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 18, 2015

Of course, I ate [] here :) arr = arrayDiff(arr, {""}); works perfectly! That's exactly what I've been looking for, thanks!

0 votes
Błażej O_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 18, 2015

Of course I could just loop through the whole original array and copy all not null elements to another array, but it seems a bit overkill with large arrays :)

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events