Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.03.2011, 12:50
Интересующийся
Отправить личное сообщение для Diego Посмотреть профиль Найти все сообщения от Diego
 
Регистрация: 06.02.2011
Сообщений: 24

как "убрать" undefined?
Здравствуйте. Долго искал по форуму, но так и не нашел ответ на вопрос.

Допустим, у есть несколько переменных, и "в одну из них надо запихать остальные":
var hh1 = '555'
var hh2 = 'yyy'
var hh3 = 'kkk'
var hh = hh1+hh2+hh3

Всё было бы нормально, но если одной из переменных не присвоено значение, то в переменную hh запишется как то так: undefinedyyykkk
Можно ли как-то убрать undefined, чтобы вместо него ничего не передавалось в целевую переменную?
Ответить с цитированием
  #2 (permalink)  
Старый 24.03.2011, 12:56
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

var hh = hh1 && hh1 + hh2 && hh2 + hh3 && hh3;


!!!
Если у Вас эти переменные могут быть вообще не объявлены, то возникнет ReferenceError и выполнение скрипта прервётся. В таком случае берите не переменную, а свойство из window:

window.hh1 && hh1 // и т. д.
Ответить с цитированием
  #3 (permalink)  
Старый 24.03.2011, 12:57
Интересующийся
Отправить личное сообщение для Diego Посмотреть профиль Найти все сообщения от Diego
 
Регистрация: 06.02.2011
Сообщений: 24

большое спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 24.03.2011, 13:15
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Matre, ты бы хоть проверял сначала, прежде чем написать
Diego,
var hh = (hh1 || '') + (hh2 || '') + (hh3 || '');
Ответить с цитированием
  #5 (permalink)  
Старый 24.03.2011, 13:20
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Забыл про приоритет операций.

(a && a) + (b && b) + (c && c)


Так точно работает.
Ответить с цитированием
  #6 (permalink)  
Старый 24.03.2011, 13:44
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

var a = 'a', b, c = 'c';
alert( (a && a) + (b && b) + (c && c) );
Ответить с цитированием
  #7 (permalink)  
Старый 24.03.2011, 13:48
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

var a = 'a', b = 'b', c, d = null, e = 'e';
alert([a, b, c, d, e].join(''));
Ответить с цитированием
  #8 (permalink)  
Старый 24.03.2011, 14:39
Интересующийся
Отправить личное сообщение для Diego Посмотреть профиль Найти все сообщения от Diego
 
Регистрация: 06.02.2011
Сообщений: 24

Сообщение от Sweet
Matre, ты бы хоть проверял сначала, прежде чем написать
хоть тот вариант не работал, но он меня навел на другую идею: заменил переменные на массив, а потом циклом вбил все значения в целевую переменную, при этом проверяя каждый раз значение на undefined
var item = []
var items
item[1] = 't'
item[2] = 'd'
item[0] = 's'
for(i=0;i<4;i++){
    if(item[i]===undefined){}else{
    if(i==0){
    items = item[i]
    }else{
    items =  items + item[i]
    }}}
как то так. item[3] не существует, должен был быть undefined, но условия его отсекают
Ответить с цитированием
  #9 (permalink)  
Старый 24.03.2011, 15:13
Аватар для Vulkan
Профессор
Отправить личное сообщение для Vulkan Посмотреть профиль Найти все сообщения от Vulkan
 
Регистрация: 25.05.2010
Сообщений: 511

тогда уж так:
var item = ['t', 'd', 's'], items = '';
for (i = 0; i < 4; i++) if (item[i] !== undefined) items += item[i];
alert(items);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
While как условные выражения Latro Общие вопросы Javascript 23 27.06.2010 14:53
Как сделать такое fancy menu uonax Элементы интерфейса 2 22.05.2010 12:52
Как узнать, присутствует ли в окне полоса прокрутки или нет? возжаждавший Элементы интерфейса 6 12.03.2010 23:00
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56