Bagaimana Anda mendapatkan elemen pertama dari array seperti ini:
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
Saya mencoba ini:
alert($(ary).first());
Tapi itu akan kembali [object Object]
. Jadi saya perlu mendapatkan elemen pertama dari array yang seharusnya menjadi elemen 'first'
.
javascript
jquery
arrays
MacMac
sumber
sumber
Jawaban:
seperti ini
sumber
var a = []; a[7] = 'foo'; alert(a[0]);
Mengapa Anda jQuery-ifying a vanilla JavaScript array? Gunakan JavaScript standar!
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
Juga,
Sumber , milik bobince
sumber
Beberapa cara di bawah ini untuk keadaan yang berbeda.
Dalam kebanyakan kasus normal, cara paling sederhana untuk mengakses elemen pertama adalah dengan
tetapi ini mengharuskan Anda untuk memeriksa apakah [0] benar-benar ada.
Ada kasus dunia nyata di mana Anda tidak peduli dengan array asli, dan tidak ingin memeriksa apakah indeks ada, Anda hanya ingin mendapatkan elemen pertama atau inline yang tidak ditentukan.
Dalam hal ini, Anda bisa menggunakan metode shift () untuk mendapatkan elemen pertama, tetapi berhati-hatilah karena metode ini memodifikasi array asli (menghapus item pertama dan mengembalikannya). Oleh karena itu panjang array dikurangi satu. Metode ini dapat digunakan dalam kasus inline di mana Anda hanya perlu mendapatkan elemen pertama, tetapi Anda tidak peduli dengan array asli.
Yang penting untuk diketahui adalah bahwa keduanya di atas hanya opsi jika array Anda mulai dengan indeks [0].
Ada kasus-kasus di mana elemen pertama telah dihapus, misalnya dengan, hapus yourrray [0] meninggalkan array Anda dengan "lubang". Sekarang elemen di [0] tidak ditentukan, tetapi Anda ingin mendapatkan elemen "yang ada" pertama. Saya telah melihat banyak kasus dunia nyata ini.
Jadi, dengan asumsi kita tidak memiliki pengetahuan tentang array dan kunci pertama (atau kita tahu ada lubang), kita masih bisa mendapatkan elemen pertama.
Anda dapat menggunakan find () untuk mendapatkan elemen pertama.
Keuntungan dari find () adalah efisiensinya ketika keluar dari loop ketika nilai pertama yang memenuhi kondisi tercapai (lebih lanjut tentang ini di bawah). (Anda dapat menyesuaikan kondisi untuk mengecualikan nol atau nilai kosong lainnya juga)
Saya juga ingin memasukkan filter () di sini sebagai opsi untuk pertama "memperbaiki" array dalam salinan dan kemudian mendapatkan elemen pertama sambil tetap mempertahankan array asli (tidak dimodifikasi).
Alasan lain untuk memasukkan filter () di sini adalah bahwa ada sebelum find () dan banyak programmer telah menggunakannya (itu ES5 terhadap find () menjadi ES6).
Peringatan bahwa filter () sebenarnya bukan cara yang efisien (filter () menjalankan semua elemen) dan membuat array lain. Baik untuk digunakan pada array kecil karena dampak kinerja akan marjinal, lebih dekat dengan menggunakan forEach, misalnya.
(Saya melihat beberapa orang menyarankan untuk menggunakan ... di loop untuk mendapatkan elemen pertama, tapi saya akan merekomendasikan terhadap metode ini untuk ... di tidak boleh digunakan untuk beralih pada Array di mana urutan indeks penting karena urutannya tidak penting . t menjamin pesanan meskipun Anda dapat berdebat browser sebagian besar menghormati pesanan. Namun, karena setiap orang tidak memecahkan masalah karena banyak yang menyarankan karena Anda tidak bisa memecahkannya dan itu akan berjalan melalui semua elemen. Anda akan lebih baik menggunakan sederhana untuk lingkaran dan dengan memeriksa kunci / nilai
Baik find () dan filter () menjamin urutan elemen, jadi aman digunakan seperti di atas.
sumber
yourArray.map(n=>n).shift()
akan mengembalikan item pertama tanpa mengubah yang asli ... tidak tahu apakah itu cara terbaik tetapi jika Anda rantai array dengan .map (). Filter (). Some (). Shift () tidak apa-apa .. kalau tidak saya akan menggunakanyourArray[0]
Menggunakan destruksi ES6
Yang sama dengan
sumber
Elemen indeks 0 mungkin tidak ada jika elemen pertama telah dihapus:
Cara yang lebih baik untuk mendapatkan elemen pertama tanpa jQuery:
sumber
Jika Anda ingin mempertahankan readibility Anda selalu dapat menambahkan fungsi pertama ke
Array.protoype
:A maka Anda dapat dengan mudah mengambil elemen pertama:
sumber
.first()
lebih baik daripada melakukan[0]
?1
.first
tidak ambigu dalam hal itu.Anda bisa menggunakan
find()
:Atau jika Anda ingin elemen pertama bahkan jika itu adalah falsy :
Bekerja lebih keras:
Jika Anda peduli tentang keterbacaan tetapi tidak ingin bergantung pada insiden numerik, Anda dapat menambahkan
first()
-fungsiArray.protoype
dengan mendefinisikannya denganObject.defineProperty()
yang mengurangi perangkap memodifikasi prototipe objek Array bawaan secara langsung ( dijelaskan di sini ).Kinerja cukup bagus (
find()
berhenti setelah elemen pertama) tetapi tidak sempurna atau dapat diakses secara universal (hanya ES6). Untuk latar belakang lebih lanjut baca jawaban @Selays .Kemudian untuk mengambil elemen pertama yang dapat Anda lakukan:
Cuplikan untuk melihatnya beraksi:
sumber
find()
?find()
telah lama menjadi bagian dari bahasa tersebut. Itulah alasan mengapa cuplikan di atas berfungsi.first()
Jika array Anda tidak dijamin terisi dari indeks nol, Anda dapat menggunakan
Array.prototype.find()
:sumber
!!element
karena akan melewati nilai-nilai palsu. Saya akan merekomendasikan menggunakanfind()
cara ini:sparse.find((_, index, array) => index in array);
karena "temukan" kembalikan elemen pertama yang cocok dengan filter &&
!!e
cocok dengan elemen apa pun.Catatan ini bekerja hanya ketika elemen pertama bukanlah "falsy":
null
,false
,NaN
,""
,0
,undefined
sumber
array.find(() => true);
? Ini memungkinkan Anda melakukannya[false].find(() => true)
juga..find(value => true)
hanya berfungsi seperti yang diharapkan ... tetapi jujur jika Anda menginginkan kode yang lebih bersih dan untuk tetap mengetikkan naskah, gunakan perusakan .Coba
alert(ary[0]);
.sumber
Hanya jika Anda menggunakan underscore.js ( http://underscorejs.org/ ) Anda dapat melakukannya:
sumber
Saya tahu bahwa orang-orang yang datang dari bahasa lain ke JavaScript, mencari sesuatu seperti
head()
ataufirst()
untuk mendapatkan elemen pertama dari sebuah array, tetapi bagaimana Anda bisa melakukannya?Bayangkan Anda memiliki array di bawah ini:
Dalam JavaScript, Anda cukup melakukan:
atau yang lebih rapi, cara yang lebih baru adalah:
Tetapi Anda juga bisa menulis fungsi seperti ...
Jika menggunakan garis bawah, ada daftar fungsi yang melakukan hal yang sama seperti yang Anda cari:
sumber
Metode yang bekerja dengan array , dan bekerja dengan objek juga (waspadalah, objek tidak memiliki urutan yang dijamin!).
Saya lebih suka metode ini, karena array asli tidak dimodifikasi.
sumber
Di ES2015 dan di atasnya, menggunakan destructure array:
sumber
Satu lagi untuk mereka yang hanya peduli dengan unsur kebenaran
sumber
Temukan elemen pertama dalam array menggunakan filter:
Dalam naskah:
Dalam javascript biasa:
Dan juga, indexOf:
Dalam naskah:
Dalam javascript biasa:
sumber
Ketika ada beberapa kecocokan, .First () JQuery digunakan untuk mengambil elemen DOM pertama yang cocok dengan pemilih css yang diberikan ke jquery.
Anda tidak perlu jQuery untuk memanipulasi array javascript.
sumber
Mengapa tidak memperhitungkan kali array Anda mungkin kosong?
sumber
Gunakan saja
ary.slice(0,1).pop();
Di
array.slice (MULAI, AKHIR) .pop ();
sumber
ary[0]
?Anda juga bisa menggunakan .get (0):
Untuk mendapatkan elemen pertama dari array.
sumber
Gunakan ini untuk memisahkan karakter dalam javascript.
sumber
Contoh sebelumnya berfungsi dengan baik ketika indeks array dimulai dari nol. jawaban thomax tidak bergantung pada indeks mulai dari nol, tetapi bergantung pada
Array.prototype.find
yang saya tidak memiliki akses. Solusi berikut menggunakan jQuery $ .each bekerja dengan baik dalam kasus saya.sumber
Anda dapat melakukannya dengan lodash
_.head
begitu mudah.sumber
arr[0]
seperti yang Anda lihat di sini, itulah sebabnya saya sangat menyarankan menggunakan perpustakaan raksasa seperti lodash untuk tugas sekecil itu.sumber
@NicoLwk Anda harus menghapus elemen dengan splice, yang akan menggeser array Anda kembali. Begitu:
sumber
Deklarasikan prototipe untuk mendapatkan elemen array pertama sebagai:
Kemudian gunakan sebagai:
Atau cukup (:
sumber
Jika Anda mengubah fungsi tampilan ke array misalnya
array.map(i => i+1).filter(i => i > 3)
Dan ingin elemen pertama setelah fungsi-fungsi ini Anda hanya dapat menambahkan
.shift()
itu tidak mengubah yang asliarray
, itu cara yang lebih baikarray.map(i => i+1).filter(=> i > 3)[0]
Jika Anda ingin elemen pertama array tanpa memodifikasi yang asli Anda dapat menggunakan
array[0]
atauarray.map(n=>n).shift()
(tanpa peta Anda akan memodifikasi yang asli. Dalam hal ini btw saya akan menyarankan..[0]
versi.sumber
Buat array Obyek apa pun (
req
), maka cukup lakukanObject.keys(req)[0]
untuk memilih kunci pertama dalam array Obyek.sumber
Jawaban @thomax cukup bagus, tetapi akan gagal jika elemen pertama dalam array bernilai false atau false-y (0, string kosong, dll.). Lebih baik mengembalikan benar untuk apa pun selain tidak terdefinisi:
sumber
ES6 mudah:
sumber
[false, 0, null, undefined, '', 'last'].find(v => v)
a.find(value => true)
tidak akan mengabaikan nilai apa pun. Tetap saja, saya tidak merekomendasikan menggunakan find untuk mendapatkan item pertama.