Удаление из массива
Подскажите пожалуйста самый быстрый способ удалить из массива элементы где есть undefined, в массиве 900 - 1300 элементов.
var a = ["82undefined", "82undefined", "822025", "822025", "5undefined2775", "83232"] |
ES5:
array = array.filter(function(string) { return ~string.indexOf("undefined"); }); ES6: array = array.filter((string) => string.contains("undefined")); |
Выдает ошибку: "Uncaught TypeError: undefined is not a function"
|
var a = ["82undefined", "82undefined", "822025", "822025", "5undefined2775", "83232"] a = a.filter(function(string) { return string.indexOf("undefined") == -1; }); alert(a); |
AntonMs,
второй вариант не везде поддерживается. |
Вложений: 1
var a = [] $('#form').change(function(){ //здесь в цикле методом .push() создается массив a = a.filter(function(string) { return string.indexOf("undefined") == -1;//здесь выдает ошибку }) alert(a) }) |
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); В каком браузере тестируешь? |
браузер Chrome
цыкл .each |
Заработало! Но Я так и не понял что не так делал)
Напоследок вопрос Как быстрее? После цикла прописать: sizef.filter(function(string) { return string.indexOf("undefined") == -1; }) или в цикл вставить: b = новый элемент массива if(b.indexOf("undefined") == -1){a.push(b)} |
AntonMs, используй то, что больше нравится. Разница скорости тут просто ничтожна. Но могу только сказать, что вариант с filter в старых браузерах работать не будет.
|
Часовой пояс GMT +3, время: 15:04. |