2012-06-09 2 views
4

У меня есть этот массив: [home, info, mail,,,, something, stuff, other]Заменить/удалить пустые записи в массиве

Но я хочу, чтобы удалить или заменить ,, с ,

Я попробовал: allIDs.replace(",,", ","); Но это не похоже на работу с массивами

причины есть пустые записи заключаются в следующем:

$(document).find('DIV').each(function(){ 
    allIDs.push(this.id); }) 

Я проиндексировал все идентификационные имена Див, в к сп Эк, если есть дубликаты, а затем переименовать созданный в настоящее время DIV ID ..

В качестве альтернативы я хотел бы find() только DIV, у которых есть идентификатор определен ..

ответ

1

Измените ваш id собирающегося это ...

var allIDs = $(document).find('DIV') 
         .map(function(){ return this.id || undefined }) 
         .toArray(); 

Если нет ID на DIV, undefined будут возвращены, и ничего не будет добавлено к полученному массиву.

0

Что вы хотите, чтобы удалить пустые значения из Массив, не замените ,, на ,, я полагаю.

Попробуйте here

2

Попробуйте вместо $('div[id]'). Он выберет все элементы div с заданным атрибутом id.

0

Попробуйте получить только div s с идентификаторами определяется:

$(document).find('div[id]').each(function(){ 
    allIDs.push(this.id); }); 
}); 

Но если вы хотите очистить массив:

allIDs = clean_up(allIDs); 

function clean_up(a){ 
    var b = [] 
    for(i in a) if(a[i] && a[i].length) a.push(a[i]); 
    return a; 
} 
0

В JavaScript, вы не можете просто удалить»,,, 'в массиве для решения проблемы.

Вы имеете в виду массив ['home', 'info', '', '', '', '', 'mail', 'something', 'stuff', 'other']?

Предположим, что есть пустая строка, и вы хотите удалить их.

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

allIDs = ["home", "info", "", "", "", "", "mail", "something", "stuff", "other"]; 

remove_empty_str = function(arr) { 
    new_array = []; 
    for (ii = 0, len = arr.length; ii < len; ii++) { 
    item = arr[ii]; 
    if (item !== "" || item !== null || item !== (void 0)) { 
     new_array.push(item); 
    } 
    } 
    return new_array; 
}; 

newIDs = remove_empty_str(allIDs); 

alert(newIDs); 

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

Вы также можете повторно использовать remove_empty_str() в других приложениях.

1

Это работает очень хорошо:

theArray = theArray.filter(function(e) { return e; }); 
Смежные вопросы