Удалить пустые строки из массива при сохранении записи без цикла?
этот вопрос был задан здесь: удалить пустые строки из массива при сохранении записи индексов с непустыми строками
если бы вы заметили, как @Baz выложил его;
"I", "am", "", "still", "here", "", "man"
" и из этого я хочу произвести следующие два массива:"
"I", "am", "still", "here", "man"
все ответы к этому вопросу относится форма зацикливания.
мой вопрос: есть ли возможность удалить все index
С empty
string
без какой-либо петли? ... есть ли другая альтернатива, кроме итерации массива?
может быть regex
или какой-нибудь jQuery
что мы не знаем?
все ответы или предложения будут высоко оценены.
5 ответов:
var arr = ["I", "am", "", "still", "here", "", "man"] // arr = ["I", "am", "", "still", "here", "", "man"] arr = arr.filter(Boolean) // arr = ["I", "am", "still", "here", "man"]
// arr = ["I", "am", "", "still", "here", "", "man"] arr = arr.filter(v=>v!=''); // arr = ["I", "am", "still", "here", "man"]
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: В документации говорится:
filter
является расширением JavaScript для стандарта ECMA-262; как таковой он может отсутствовать в других реализациях стандарта. Вы можно обойти это, вставив следующий код в начале ваших скриптов, позволяющих использовать фильтр в реализациях ECMA-262 которые изначально не поддерживают его. Этот алгоритм именно тот указано в ECMA-262, 5-е издание, если предположить, что ФН.вызов принимает исходное значение функции.прототип.звоните, а то Матрица.прототип.толчок имеет свое первоначальное значение.Итак, чтобы избежать некоторых страданий, вам, возможно, придется добавить этот код в свой скрипт В начале.
if (!Array.prototype.filter) { Array.prototype.filter = function (fn, context) { var i, value, result = [], length; if (!this || typeof fn !== 'function' || (fn instanceof RegExp)) { throw new TypeError(); } length = this.length; for (i = 0; i < length; i++) { if (this.hasOwnProperty(i)) { value = this[i]; if (fn.call(context, value, i, this)) { result.push(value); } } } return result; }; }
Если вы используете jQuery, grep может быть полезно:
var arr = [ a, b, c, , e, f, , g, h ]; arr = jQuery.grep(arr, function(n){ return (n); });
arr
теперь[ a, b, c, d, e, f, g];
т. е. нам нужно взять несколько адресов электронной почты, разделенных запятой, пробелами или новой строкой, как показано ниже.
var emails = EmailText.replace(","," ").replace("\n"," ").replace(" ","").split(" "); for(var i in emails) emails[i] = emails[i].replace(/(\r\n|\n|\r)/gm,""); emails.filter(Boolean); console.log(emails);