Сложение переменных типа String и Undefined



  • Доброго времени суток, пытаюсь решить свою проблему, но пока безуспешно.
    Имеем пять переменных типа string (не все), которые при сложении должны стать ссылкой:

    VAR_SITE = "http://www.blablablla.com/";
    VAR_REGION = "usa/";
    VAR_CATEGORIES = "transport/";
    VAR_PRICE = undefined;
    VAR_CURRENCY = "usd";
    

    Беда в том, что я не могу сложить эти переменные в одну (пробовал в инструменте Шаблон), если хоть одна из них имеет тип undefined, так как происходит ошибка. Ещё пробовал таким способом:

    VAR_ALL = ([[SITE]] + [[REGION]] + [[CATEGORIES]] + [[PRICE]] + [[CURRENCY]]);
    

    Ошибок нет но undefined никуда не делся :
    ALL: "http://www.blablablla.com/usa/transport/undefinedusd",

    А нужно так:
    ALL: "http://www.blablablla.com/usa/transport/usd",

    Буду рад узнать как сложить строки так, чтоб если одна или несколько переменных имеет тип undefined это не влияло на результат сложения. Спасибо.



  • Если до этого сделать проверку типа [[price]].length>0
    ?



  • Можно, но подобная проверка потянет за собой кучу дополнительных действий. Просто в дальнейшем у меня могут быть не 5 а скажем 20 переменных в разных состояниях, это сильно растянет скрипт, но если не удастся найти более лёгкого решения не влекущего за собой большого количества действий воспользуюсь вашей рекомендацией, большое спасибо за подсказку.



  • @konkord
    Тогда по другому:
    if all содержит undefined
    заменить undefined на ничего



  • @konkord При сложение со строкой в любом случае тип данных udefined будет также приводиться к строке. Можно как вариант загнать все переменные в массив. Потом сделать фильтр на тип данных, а потом объединить в строку. На js это будет выглядеть примерно так:

    var arr_values=[
    value1,
    value2,
    value3
    ];
    var str=arr_values.filter(function(item){
       return typeof(item)=='string';
    }).join('');
    

    Или еще проще

    function stringUndefined(string){
      if(typeof(string)=='undefined'){
        return '';
      };
      return string;
    };
    
    var str=stringUndefined(value1)+stringUndefined(value2)+stringUndefined(value3);
    


  • @forall О, благодарю. Об этом не подумал, спасибо за подсказку, это то что нужно!



  • @denis_krsk Круто, достаточно лаконично и просто, благодарю за столь интересное решение. Огромное вам спасибо!


Log in to reply
 

  • 3
  • 4
  • 4
  • 4
  • 5
  • 2
  • 4
  • 15