2016-01-21 39 views
-1

我有一个脚本是要扔用户帐户,并将现场手机的价值推到数组中。但是,如何防止在手机字段为空时将数值推入数组中?如何防止向数组添加空值?

因此,而不是像这样:'123,,,123,123,,123,,123'我想实现这一目标:[123,123,123,123,123]

这是该检查代码的主要部分,如果值是空的或不:

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); 

    } 

这是怎么了我的整个代码看起来像现在:

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); 
     } 
    } 

} 
+2

这不是'ruby'代码吗? 'smsUsers.user.mobile_phone.nil()' –

+1

当mobile_phone为空时,你还没有测试过。 – djechlin

+0

的可能重复[我怎样才能解析CSV字符串使用Javascript?](http://stackoverflow.com/questions/8493195/how-can-i-parse-a-csv-string-with-javascript) – Jackie

回答

2

你可以尝试使用正则表达式是这样的:

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); 
} 

而且你需要更改||年代到&&年代。

作为djechlin pointed out,你没有检查null足够早;我已将它移到上面的检查顶部。

+1

'。 mobile_phone!= null &&','.mobile_phone!=''&&'和'.mobile_phone .length!= 0 &&'都可以简化为'.mobile_phone &&'。 –

+0

谢谢@ brso05作品非常漂亮! – Michal

+1

例如,整个事情可以是'if(mobile_phone && mobile_phone.match(/ \ S /)&& mobile_phone.toLowerCase()!='false')' –