0

I have a script which is going throw users account and and pushing the value of field mobile phone into array. But how can I prevent pushing into array an empty value when the mobile phone field is empty ?

So instead something like this : '123,,,123,123,,123,,123' i want to achive this: [123,123,123,123,123].

This is the main part of code which is checking if value is empty or not:

if (!smsUsers.user.mobile_phone.nil() || 
     smsUsers.user.mobile_phone != null || 
     smsUsers.user.mobile_phone != '' || 
     smsUsers.user.mobile_phone.length != 0 || 
     smsUsers.user.mobile_phone ||
     smsUsers.user.mobile_phone.toString().toLowerCase() != 'false'){

       notSccUserPhone.push(smsUsers.user.mobile_phone);

     }

This is how my whole code look like now:

function getMobileNumber(param) {  
    var sccUserPhone = [];
    var notSccUserPhone = [];                          

    var smsGroup = new CheckServices().getServiceParms("Major Incident", current, true);
    if(smsGroup.next()){
        var smsGroupNumber = smsGroup.u_parm_2;
        gs.log('Group of sms targets ' + smsGroupNumber);

        var smsUsers = new GlideRecord("sys_user_grmember");
        smsUsers.addQuery("group.name", smsGroupNumber);
        smsUsers.query();
        if(param == 'true'){
            while (smsUsers.next()) {
                if(smsUsers.user.email.indexOf('scc') == -1){
                    if (!smsUsers.user.mobile_phone.nil() || smsUsers.user.mobile_phone != null || smsUsers.user.mobile_phone != '' || smsUsers.user.mobile_phone.length != 0 || smsUsers.user.mobile_phone || smsUsers.user.mobile_phone.toString().toLowerCase() != 'false'){
                        notSccUserPhone.push(smsUsers.user.mobile_phone);

                    }
                }       
            }

            gs.log('Not SCC mobile namber array is ' + notSccUserPhone); 
            template.print(notSccUserPhone);
        } else if(param == 'false'){
            while (smsUsers.next()) {
                    if(smsUsers.user.email.indexOf('scc') != -1){
                        if (!smsUsers.user.mobile_phone.nil() || smsUsers.user.mobile_phone != null || smsUsers.user.mobile_phone != '' || smsUsers.user.mobile_phone.length != 0 || smsUsers.user.mobile_phone || smsUsers.user.mobile_phone.toString().toLowerCase() != 'false'){
                            sccUserPhone.push(smsUsers.user.mobile_phone);

                        }

                }
            }

            gs.log('SCC mobile namber array is ' + sccUserPhone);
            template.print(sccUserPhone);
        }
    }

}
Jackie
  • 21,969
  • 32
  • 147
  • 289
Michal
  • 153
  • 1
  • 1
  • 9

1 Answers1

2

You can try to use regex like this:

if (smsUsers.user.mobile_phone != null &&
 smsUsers.user.mobile_phone.match(/\S/) &&
 smsUsers.user.mobile_phone.toString().toLowerCase() != 'false')
{
    notSccUserPhone.push(smsUsers.user.mobile_phone);
}

Also you need to change your ||'s to &&'s.

And as djechlin pointed out, you're not checking for null early enough; I've moved it to the top of the checks above.

Community
  • 1
  • 1
brso05
  • 13,142
  • 2
  • 21
  • 40
  • 1
    `.mobile_phone != null &&`, `.mobile_phone != '' &&`, and `.mobile_phone .length != 0 &&` can all be condensed to simply `.mobile_phone &&`. – T.J. Crowder Jan 21 '16 at 18:42
  • 1
    E.g., the whole thing can be `if (mobile_phone && mobile_phone.match(/\S/) && mobile_phone.toLowerCase() != 'false')` – T.J. Crowder Jan 21 '16 at 18:42