Andaikan sekarang terdapat pelbagai objek
arr=[
{
id:1,
content:'a'
},{
id:2,
content:'b'
},{
id:2,
content:'c'
},{
id:3,
content:'d'
},{
id:3,
content:'e'
},{
id:3,
content:'f'
},{
id:3,
content:'g'
},{
id:4,
content:'h'
},
]
Saya ingin mengalih keluar id yang sama dan menyimpan item terakhir setiap id
arr=[
{
id:1,
content:'a'
},{
id:2,
content:'c'
},{
id:3,
content:'g'
},{
id:4,
content:'h'
},
]
Adakah cara yang lebih baik? .
Mengikut konvensyen, kod ES6
Ada masalah di sini,
findIndex
Sekurang-kurangnya dua pelayar tidak menyokongnya, jadi jika ia tidak menyokongnya, anda perlu menulis satu sendiriPenyelesaian lain
Penyelesaian klasik, gunakan Map
Oleh kerana id bukan rentetan, kelas ES6
Map
digunakan. Apabila jumlah data adalah besar, menggunakan jadual carian boleh meningkatkan kecekapan dengan ketara berbanding carian linear dalam senarai.Malah, anda juga boleh menggunakan objek sebagai ganti peta, sekurang-kurangnya dalam use case ini tidak akan ada masalah. Kerana tiada ciri es6, kami hanya menggunakan sintaks es5. Struktur kod dan logik adalah sama seperti perenggan di atas
Penyelesaian pelik, menggunakan id integer
Oleh kerana ia adalah id integer, anda boleh terus memasukkannya ke dalam array mengikut id ini. Jika ID yang sama ditemui, ia akan diganti terus. Jika id tidak berturut-turut, anda perlu menapis elemen kosong di hujung
Terdapat masalah lain dengan penyelesaian ini Ia tidak dapat mengekalkan susunan unsur tatasusunan asal. Kemudian seseorang pasti akan berfikir bahawa penyelesaian menggunakan Map juga boleh mengurangkan kod menjadi kod yang sama tanpa menjadikannya begitu rumit Sudah tentu, ia juga mungkin kehilangan susunan asal
Menggunakan fungsi anak panah memudahkan seperti berikut:
Terdapat banyak jawapan di sini, tetapi tidak ada menyebut tentang fungsi terbina dalam Array reduceRight Malah, keperluan penyoal adalah untuk mengekalkan digit terakhir ID yang sama, yang sangat mudah untuk dilaksanakan menggunakan reduceRight.
reduceRight mula menggelung dari hujung tatasusunan asal anda Nilai awal di sini ialah tatasusunan r[0] digunakan untuk menyimpan Set id, dan r[1] menyimpan tatasusunan hasil Tetapkan, kemudian tambah id ini pada Tetapkan dan letakkan item ini di kepala tatasusunan yang terhasil.
Akhirnya, keperluan pemilik topik dapat dicapai dengan mudah, dan pesanan itu dijamin.
Diuji secara peribadi dan berkesan
biar newArr = [],
Sila rujuk
Boleh rujuk apa yang saya tulis di blog saya, saya tulis 8 kaedah di blog saya. http://alfierichou.top/2017/0...