Pertanyaan ini ditanyakan di sini: Hapus string kosong dari array sambil menyimpan catatan indeks dengan string yang tidak kosong
Jika Anda melihat yang diberikan sebagai @Baz meletakkannya;
"I", "am", "", "still", "here", "", "man"
"dan dari sini saya ingin menghasilkan dua larik berikut:"
"I", "am", "still", "here", "man"
Semua Jawaban atas pertanyaan ini mengacu pada bentuk perulangan.
Pertanyaan saya: Apakah ada kemungkinan untuk menghapus semua index
es dengan empty
string
tanpa perulangan? ... apakah ada alternatif lain selain dari iterasi array?
Mungkin beberapa regex
atau beberapa jQuery
yang tidak kita sadari?
Semua jawaban atau saran sangat dihargai.
array.filter(!!)
yang saat ini kami dapatkan :)Boolean
akan menyenangkan.var newArray = oldArray.filter(function(v){return v!==''});
sumber
HARAP DICATAT: Dokumentasi mengatakan:
Jadi, untuk menghindari sakit hati, Anda mungkin harus menambahkan kode ini ke skrip Anda di awal .
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; }; }
sumber
arr = arr.filter(v => v);
sebagai
v
balasannya implikasi diubah menjadi kebenaransumber
Jika menggunakan jQuery, grep mungkin berguna:
var arr = [ a, b, c, , e, f, , g, h ]; arr = jQuery.grep(arr, function(n){ return (n); });
arr
sekarang[ a, b, c, d, e, f, g];
sumber
yaitu kita perlu mengambil beberapa alamat email yang dipisahkan dengan koma, spasi atau baris baru seperti di bawah ini.
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);
sumber
.replace(" ","").split(" ")
"ganti semua spasi dengan tidak ada apa pun, lalu coba pisahkan di setiap ruang"Anda dapat menggunakan metode lodash, ini berfungsi untuk string, angka, dan tipe boolean
_.compact([0, 1, false, 2, '', 3]); // => [1, 2, 3]
https://lodash.com/docs/4.17.15#compact
sumber