To pytanie zostało tutaj zadane: Usuń puste ciągi z tablicy, zachowując zapis indeksów z niepustymi ciągami
Jeśli zauważysz dane, jak to ułożył @Baz;
"I", "am", "", "still", "here", "", "man"
"i na tej podstawie chciałbym utworzyć następujące dwie tablice:"
"I", "am", "still", "here", "man"
Wszystkie odpowiedzi na to pytanie dotyczyły formy zapętlenia.
Moje pytanie: czy istnieje możliwość usunięcia wszystkich index
znaków empty
string
bez zapętlenia? ... czy istnieje inna alternatywa poza iteracją tablicy?
Mogą być pewne regex
lub niektórych jQuery
, że nie jesteśmy świadomi?
Wszystkie odpowiedzi lub sugestie są wysoko cenione.
array.filter(!!)
tego, jakie obecnie możemy uzyskać :)Boolean
byłoby miłe.var newArray = oldArray.filter(function(v){return v!==''});
źródło
UWAGA: Dokumentacja mówi:
Tak więc, aby uniknąć bólu serca, być może będziesz musiał dodać ten kod do swojego skryptu na początku .
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; }; }
źródło
arr = arr.filter(v => v);
zwrócony
v
jest implicity przekształca się truthyźródło
Jeśli używasz jQuery, grep może się przydać:
var arr = [ a, b, c, , e, f, , g, h ]; arr = jQuery.grep(arr, function(n){ return (n); });
arr
jest teraz[ a, b, c, d, e, f, g];
źródło
tj. musimy wziąć wiele adresów e-mail oddzielonych przecinkiem, spacjami lub znakiem nowej linii, jak poniżej.
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);
źródło
.replace(" ","").split(" ")
„zamień wszystkie spacje na nic, a następnie spróbuj podzielić na każdą spację”Możesz użyć metody lodash, działa ona dla typu string, number i boolean
_.compact([0, 1, false, 2, '', 3]); // => [1, 2, 3]
https://lodash.com/docs/4.17.15#compact
źródło