Saya bekerja dengan Javascript (ES6) / FaceBook bereaksi dan mencoba untuk mendapatkan 3 elemen pertama dari array yang ukurannya bervariasi. Saya ingin melakukan yang setara dengan Linq take (n).
Dalam file Jsx saya, saya memiliki yang berikut ini:
var items = list.map(i => {
return (
<myview item={i} key={i.id} />
);
});
Kemudian untuk mendapatkan 3 item pertama saya mencoba
var map = new Map(list);
map.size = 3;
var items = map(i => {
return (<SpotlightLandingGlobalInboxItem item={i} key={i.id} />);
});
Ini tidak berfungsi karena peta tidak memiliki fungsi yang ditetapkan.
Bisakah Anda membantu?
javascript
reactjs
pengguna1526912
sumber
sumber
list.slice(0, 3);
dan kemudian mengulanginya?Jawaban:
Saya yakin yang Anda cari adalah:
sumber
Untuk mendapatkan
n
elemen pertama array, gunakansumber
slice
fungsi pada array mengembalikan salinan array yang dangkal, dan tidak mengubah array asli. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Ini mungkin mengejutkan tetapi
length
properti dari array tidak hanya digunakan untuk mendapatkan jumlah elemen array tetapi juga dapat ditulis dan dapat digunakan untuk mengatur panjang tautan MDN array . Ini akan mengubah array.Jika array saat ini tidak diperlukan lagi dan Anda tidak peduli tentang kekekalan atau tidak ingin mengalokasikan memori yaitu untuk permainan cara tercepat adalah
untuk mengosongkan array
sumber
arr = []
?Jangan coba melakukan itu menggunakan fungsi peta. Fungsi peta harus digunakan untuk memetakan nilai dari satu hal ke hal lainnya. Ketika jumlah input dan output cocok.
Dalam hal ini gunakan fungsi filter yang juga tersedia pada array. Fungsi filter digunakan ketika Anda ingin secara selektif mengambil nilai dengan kriteria tertentu. Kemudian Anda dapat menulis kode seperti
sumber
Anda dapat memfilter menggunakan
index
array.sumber
.filter
pada itu sendiri bukanlah pilihan bagus, setidaknya tidak jika array input mungkin panjang..filter
melewati setiap elemen array memeriksa kondisinya..slice
tidak akan melakukan ini, tetapi hanya akan mengekstrak elemen n pertama dan kemudian berhenti memproses - yang pasti akan menjadi apa yang Anda inginkan untuk daftar panjang. (Seperti @elQueFaltaba sudah mengatakan dalam komentar untuk jawaban lain.)Berikut ini bekerja untuk saya.
Berikut ini sebuah contoh
sumber
slice
tetapi yang kedua Anda gunakansplice
.["Apple", "Mango"]
dari ini. Bagian pertama dari slice bukanlah "di mana untuk mulai menghapus", itu adalah tempat untuk memulai slice. Itu tidak mengubah array asli dan tidak akan menghapus apa pun.Dengan https://github.com/Siderite/LInQer Anda dapat ke Enumerable.from (daftar) .take (3) .toArray ();
sumber
Gunakan Filter
Bukan praktik terbaik tetapi cara lain
const cutArrByN = arr.filter((item, idx) => idx < n);
sumber