Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.01.2015, 14:36
Аватар для AntonMs
Профессор
Отправить личное сообщение для AntonMs Посмотреть профиль Найти все сообщения от AntonMs
 
Регистрация: 25.01.2015
Сообщений: 163

Удаление из массива
Подскажите пожалуйста самый быстрый способ удалить из массива элементы где есть undefined, в массиве 900 - 1300 элементов.
var a = ["82undefined", "82undefined", "822025", "822025", "5undefined2775", "83232"]
Ответить с цитированием
  #2 (permalink)  
Старый 26.01.2015, 14:56
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

ES5:
array = array.filter(function(string) {
    return ~string.indexOf("undefined");
});

ES6:
array = array.filter((string) => string.contains("undefined"));
Ответить с цитированием
  #3 (permalink)  
Старый 26.01.2015, 16:49
Аватар для AntonMs
Профессор
Отправить личное сообщение для AntonMs Посмотреть профиль Найти все сообщения от AntonMs
 
Регистрация: 25.01.2015
Сообщений: 163

Выдает ошибку: "Uncaught TypeError: undefined is not a function"
Ответить с цитированием
  #4 (permalink)  
Старый 26.01.2015, 16:54
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

var a = ["82undefined", "82undefined", "822025", "822025", "5undefined2775", "83232"]

a = a.filter(function(string) {
    return string.indexOf("undefined") == -1;
});

alert(a);
Ответить с цитированием
  #5 (permalink)  
Старый 26.01.2015, 17:02
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

AntonMs,
второй вариант не везде поддерживается.
Ответить с цитированием
  #6 (permalink)  
Старый 26.01.2015, 18:01
Аватар для AntonMs
Профессор
Отправить личное сообщение для AntonMs Посмотреть профиль Найти все сообщения от AntonMs
 
Регистрация: 25.01.2015
Сообщений: 163

var a = []
$('#form').change(function(){
//здесь в цикле методом .push() создается массив

a = a.filter(function(string) {
    return string.indexOf("undefined") == -1;//здесь выдает ошибку
})
alert(a)

})
Изображения:
Тип файла: jpg Снимок.jpg (7.9 Кб, 8 просмотров)
Ответить с цитированием
  #7 (permalink)  
Старый 26.01.2015, 18:35
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

AntonMs,
значит у тебя как-то не так изменяется массив. У меня всё работает.
var a = [];
for (var i = 0; i< 5; i++) {
a.push('undefined' + i);
}
a.push('text');
a.push('next text');

a = a.filter(function(string) {
    return string.indexOf("undefined") == -1;
});
alert(a);



В каком браузере тестируешь?
Ответить с цитированием
  #8 (permalink)  
Старый 26.01.2015, 18:43
Аватар для AntonMs
Профессор
Отправить личное сообщение для AntonMs Посмотреть профиль Найти все сообщения от AntonMs
 
Регистрация: 25.01.2015
Сообщений: 163

браузер Chrome

цыкл .each
Ответить с цитированием
  #9 (permalink)  
Старый 26.01.2015, 19:20
Аватар для AntonMs
Профессор
Отправить личное сообщение для AntonMs Посмотреть профиль Найти все сообщения от AntonMs
 
Регистрация: 25.01.2015
Сообщений: 163

Заработало! Но Я так и не понял что не так делал)
Напоследок вопрос
Как быстрее?

После цикла прописать:
sizef.filter(function(string) {
    return string.indexOf("undefined") == -1;
})


или в цикл вставить:
b = новый элемент массива
if(b.indexOf("undefined") == -1){a.push(b)}
Ответить с цитированием
  #10 (permalink)  
Старый 26.01.2015, 19:54
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

AntonMs, используй то, что больше нравится. Разница скорости тут просто ничтожна. Но могу только сказать, что вариант с filter в старых браузерах работать не будет.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление элемента массива без сдвига индексов preproger Общие вопросы Javascript 6 06.03.2015 17:50
Удаление одинаковых элементов массива Ваяс Events/DOM/Window 57 20.02.2014 14:31
удаление элемента массива и его длина Esigns Общие вопросы Javascript 3 17.07.2013 19:23
Удаление элемента массива по его названию Dorian_bs Общие вопросы Javascript 13 04.07.2013 21:28
Удаление элемента из массива saharin Общие вопросы Javascript 3 11.12.2012 14:22