Agak aneh bahwa kelas JavaScript Array tidak menawarkan metode terakhir untuk mengambil elemen terakhir dari sebuah array. Saya tahu solusinya sederhana (Ar [Ar.length-1]), tetapi, tetap saja, ini terlalu sering digunakan.
Adakah alasan serius mengapa ini belum dimasukkan?
javascript
Nikhil Garg
sumber
sumber
item= array.pop();
.array[array.length-1]
adalah cara yang lebih cepat dari yang lain.(Ar[Ar.length-1])
mendapat kinerja 20x lebih baik untuk saya.Jawaban:
Karena Javascript berubah sangat lambat. Dan itu karena orang memperbarui browser secara perlahan.
Banyak perpustakaan Javascript mengimplementasikan
last()
fungsinya sendiri . Gunakan satu!sumber
last()
fungsinya sendiri . Pertanyaannya adalah tentang sifat pengembangan bahasa inti Javascript itu sendiri.Anda dapat melakukan sesuatu seperti ini:
Tampilkan cuplikan kode
Jumlah metode pembantu yang dapat ditambahkan ke bahasa tidak terbatas. Saya kira mereka belum mempertimbangkan untuk menambahkan yang ini.
sumber
Mudah mendefinisikannya sendiri. Itulah kekuatan JavaScript.
Namun, ini dapat menyebabkan masalah dengan kode pihak ke-3 yang (salah) gunakan
for..in
loop untuk beralih lebih dari array.Namun, jika Anda tidak terikat dengan masalah dukungan browser , maka menggunakan sintaks ES5 baru untuk mendefinisikan properti dapat menyelesaikan masalah itu, dengan membuat fungsi tersebut tidak dapat dihitung, seperti:
sumber
for..in
masalah. Tentu, kami belum ada di sana dengan implementasi ES5 yang luas, tetapi cukup baik untuk tahu sekarang karena browser mengejar dengan cepat, termasuk IE9.this.length - 1
evaluasikan ke-1
, yang, karena merupakan angka negatif, diperlakukan sebagai properti array, bukan indeks elemen.i = [].concat(loves).pop(); //corn
ikon kucing suka popcorn
sumber
Opsi lain, terutama jika Anda sudah menggunakan UnderscoreJS, adalah:
sumber
sumber
null
atauundefined
?this[l-1]
akan memberi Andaundefined
seperti biasa untuk mengakses properti yang tidak ada. Secara pribadi saya lebih suka JS melemparkan pengecualian daripada kembaliundefined
, tetapi JS lebih suka menyapu kesalahan di bawah karpet.Datang ke sini mencari jawaban untuk pertanyaan ini sendiri. Jawaban irisan mungkin yang terbaik, tetapi saya pergi ke depan dan menciptakan fungsi "terakhir" hanya untuk berlatih memperluas prototipe, jadi saya pikir saya akan maju dan membagikannya. Ini memiliki manfaat tambahan dibandingkan yang lain sehingga Anda dapat secara opsional menghitung mundur melalui array, dan menarik, katakanlah, item kedua ke terakhir atau ketiga ke item terakhir. Jika Anda tidak menentukan jumlah, maka itu hanya default ke 1 dan mengeluarkan item terakhir.
sumber
last(4)
ataulast(9)
kehilangan arti nama fungsi, yaitu;last
Berikut ini cara lain yang lebih sederhana untuk mengiris elemen terakhir
lastObj
sekarang["barfoo"]
.Python melakukan ini dengan cara yang sama dan ketika saya mencoba menggunakan JS itu berhasil. Saya menduga manipulasi string dalam bahasa scripting bekerja dengan cara yang sama.
Demikian pula, jika Anda ingin dua objek terakhir dalam array,
akan memberi Anda
["foobar", "barfoo"]
dan sebagainya.sumber
lastObj
akan mengandung["barfoo"]
. Dalam hal apa pun, mengapa saya harus melakukan hal yangArray.prototype.slice.call(tags
adiltags.slice
?pop()
Metode akan memunculkan nilai terakhir. Tetapi masalahnya adalah Anda akan kehilangan nilai terakhir dalam arraysumber
Ya, atau hanya:
jika Anda menginginkan nilainya, dan bukan daftar baru.
sumber