Как скрыть неопределенную переменную в массиве - PullRequest
1 голос
/ 05 июля 2011

Просто к вашему сведению, прежде чем вы продолжите читать ... Я не из тех, кто работает с stackoverflow каждый раз, когда я не могу найти решение своей проблемы, но это действительно заставило мою голову кружиться.

Как скрыть неопределенную переменную внутри массива:

var state_zip = address.split(',')[2];

Я хочу, чтобы переменная state_zip выводила пустое "" вместо "undefined" при выводе данных.

Мне это тоже не показалось.

ar more2 = address.split(',')[4];if (more2.split(',')[4]=="undefined"){more2=""} 
ar more2 = address.split(',')[4];if (more2.split(' ')=="undefined"){more2=""}

Любой, кто может помочь мне понять это, был бы очень признателен.Я больше бэкэнд-разработчик, так что это немного не в моей обычной среде.

Ответы [ 7 ]

3 голосов
/ 05 июля 2011

Попробуйте использовать typeof :

if ('undefined' === typeof state_zip)
  state_zip = '';
1 голос
/ 05 июля 2011
> var address = 'asd';
> var state_zip = address.split(',')[2];
> console.log(state_zip);
undefined
> var state_zip = address.split(',')[2] || '';
> console.log(state_zip);

> 
0 голосов
/ 05 июля 2011

Вы можете дополнить строку, если она слишком короткая;

var template = ",,,," //a comma per expected entry
var address  = "123 street,town"

address = (address + template.substr(address.split(',').length)).split(",");

>>address = [123 street,town,,]

var state_zip = address[2];

>>state_zip = ""
0 голосов
/ 05 июля 2011

Я думаю, что с помощью jquery вы можете сделать что-то вроде:

var more2 = address.split (',');

$. Каждый (more2, функция (i, l) {

  more2[i] = (more2[i] == undefined) ? '' : more2[i];
});
0 голосов
/ 05 июля 2011

Проверьте длину массива:

var arrAddress = address.split(',');
var more2 = (arrAddress.length >= 5) ? arrAddress[4] : "";

Когда вы пытаетесь прочитать массив JS за его пределами, вы получаете неопределенное значение, поэтому просто убедитесь, что вы в пределах границ, в противном случае присвойте пустую строку.

Вы можете сделать его более универсальным, используя такую ​​функцию:

function GetItem(array, index) {
   return (index >= 0 && index < array.length) ? array[index] : "";
}

Тогда назовите это как:

var more2 = GetItem(arrAddress, 4);
var more3 = GetItem(arrAddress, 5);
...
0 голосов
/ 05 июля 2011

Разве не определено ключевое слово javascript? Вы должны быть в состоянии сделать

if(more2.split(',')[4] == undefined) more2 = "";

Нет необходимости в кавычках.

0 голосов
/ 05 июля 2011

Не используйте кавычки вокруг undefined.Вы должны проверить undefined следующим образом -

var more2 = address.split(',')[4];if (more2.split(',')[4]==undefined){more2=""} 
var more2 = address.split(',')[4];if (more2.split(' ')==undefined){more2=""}

Когда вы используете кавычки вокруг undefined, вы в основном проверяете, содержит ли эта переменная строку "undefined".

Пример на jsfiddle

...