Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как "убрать" undefined? (https://javascript.ru/forum/misc/16053-kak-ubrat-undefined.html)

Diego 24.03.2011 12:50

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

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

Всё было бы нормально, но если одной из переменных не присвоено значение, то в переменную hh запишется как то так: undefinedyyykkk
Можно ли как-то убрать undefined, чтобы вместо него ничего не передавалось в целевую переменную?

Matre 24.03.2011 12:56

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


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

window.hh1 && hh1 // и т. д.

Diego 24.03.2011 12:57

большое спасибо!

Sweet 24.03.2011 13:15

Matre, ты бы хоть проверял сначала, прежде чем написать:)
Diego,
var hh = (hh1 || '') + (hh2 || '') + (hh3 || '');

Matre 24.03.2011 13:20

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

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


Так точно работает.

Sweet 24.03.2011 13:44

var a = 'a', b, c = 'c';
alert( (a && a) + (b && b) + (c && c) );

Kolyaj 24.03.2011 13:48

var a = 'a', b = 'b', c, d = null, e = 'e';
alert([a, b, c, d, e].join(''));

Diego 24.03.2011 14:39

Цитата:

Сообщение от 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, но условия его отсекают

Vulkan 24.03.2011 15:13

тогда уж так:
var item = ['t', 'd', 's'], items = '';
for (i = 0; i < 4; i++) if (item[i] !== undefined) items += item[i];
alert(items);


Часовой пояс GMT +3, время: 17:48.