Halo, Habr! Saya mempersembahkan kepada Anda terjemahan artikel "7 Trik dengan Beristirahat dan Menyebar Obyek JavaScript" oleh Joel Thoms.Halo semuanya, beberapa hari yang lalu seorang rekan kerja melemparkan saya sebuah tautan ke sebuah artikel dalam bahasa Inggris yang berisi daftar berbagai metode kerja dengan operator lain dan yang menyebar. Dia berguna bagi saya dan saya memutuskan untuk menerjemahkannya. Jadi, mari kita mulai.
Operator Istirahat dan Spread dapat digunakan tidak hanya untuk menggabungkan argumen ke dalam array dan menggabungkan array.Pada artikel ini Anda akan menemukan 7 trik yang paling tidak diketahui dalam menggunakan operator lainnya dan sebarkan.1. Menambahkan properti
Mengkloning objek sambil menambahkan objek baru ke objek yang dikloning.Pada contoh di bawah ini, kami mengkloning objek pengguna dan menambahkan properti kata sandi ke objek userWithPass yang dikloning .const user = { id: 100, name: 'Howard Moon'}
const userWithPass = { ...user, password: 'Password!' }
user
userWithPass
2. Menggabungkan objek
Menganalisa proses part1 dan part2 merzhatsya objek pengguna1const part1 = { id: 100, name: 'Howard Moon' }
const part2 = { id: 100, password: 'Password!' }
const user1 = { ...part1, ...part2 }
Jadi objek yang sama dapat bersebelahan menggunakan sintaks ini.const partial = { id: 100, name: 'Howard Moon' }
const user = { ...partial, id: 100, password: 'Password!' }
user
3. Menghapus properti dari objek
Properti dari suatu objek dapat dihilangkan menggunakan kombinasi dari pernyataan restrukturisasi dan sisanya. Pada contoh di bawah ini, kami merusak objek sisanya dan menghapus properti kata sandi dari itu .const noPassword = ({ password, ...rest }) => rest
const user = {
id: 100,
name: 'Howard Moon',
password: 'Password!'
}
noPassword(user)
4. Penghapusan dinamis properti
Pada contoh di bawah ini, fungsi removeProperty mengambil prop sebagai argumen. Menggunakan nama properti yang diteruskan dalam argumen, kami secara dinamis mengecualikan properti dari objek yang dikloning.const user1 = {
id: 100,
name: 'Howard Moon',
password: 'Password!'
}
const removeProperty = prop => ({ [prop]: _, ...rest }) => rest
const removePassword = removeProperty('password')
const removeId = removeProperty('id')
removePassword(user1)
removeId(user1)
5. Organisasi atau pemilahan properti berdasarkan nama
Terkadang properti dalam objek tidak dalam urutan yang kita butuhkan. Dengan menggunakan beberapa trik, kita dapat mendorong properti ke atas daftar, atau ke tengah, misalnya.const user3 = {
password: 'Password!',
name: 'Naboo',
id: 300
}
const organize = object => ({ id: undefined, ...object })
organize(user3)
Untuk memasukkan kata sandi di akhir, pertama-tama Anda harus merusak objek dan menghapus kata sandi , dan kemudian menggunakan operator spread untuk menambahkannya.6. Properti Default
Properti default adalah properti yang akan ditetapkan jika mereka tidak ada di objek yang dikloning.Dalam contoh di bawah ini, bidang kutipan tidak ada di objek user2 . Fungsi setDefaults, dengan tidak adanya bidang tanda kutip , menetapkannya secara default dengan nilai [] . Setelah memanggil fungsi setDefaults (user2) , ia mengembalikan properti dengan tanda kutip nilai : []
Ketika memanggil setDefaults (user4), fungsi mengembalikan nilai yang tidak dimodifikasi karena objek user4 sudah memiliki properti tanda kutipconst user2 = {
id: 200,
name: 'Vince Noir'
}
const user4 = {
id: 400,
name: 'Bollo',
quotes: ["I've got a bad feeling about this..."]
}
const setDefaults = ({ quotes = [], ...object}) =>
({ ...object, quotes })
setDefaults(user2)
setDefaults(user4)
Anda juga dapat menulisnya seperti ini jika Anda ingin nilai default ditampilkan terlebih dahulu:const setDefaults = ({ ...object}) => ({ quotes: [], ...object })
7. Mengganti nama properti
Dengan menggunakan trik-trik dari atas, kita juga dapat membuat fungsi yang mengubah nama properti objek menjadi kita.Bayangkan bahwa kita memiliki objek dengan ID properti yang ditulis dalam huruf besar, dan kita perlu mengganti namanya menjadi huruf kecil. Kami mulai dengan menghapus properti ID dari objek. Kemudian tambahkan kembali dengan nama id saat objek sedang dikloning.const renamed = ({ ID, ...object }) => ({ id: ID, ...object })
const user = {
ID: 500,
name: "Bob Fossil"
}
renamed(user)
8. Bonus. Menambahkan Properti Berdasarkan Kondisi
Terima kasih kepada @vinialbano karena menunjukkan metode seperti itu. Dalam contoh ini, kami menambahkan bidang kata sandi hanya jika kata sandi == benar !const user = { id: 100, name: 'Howard Moon' }
const password = 'Password!'
const userWithPassword = {
...user,
id: 100,
...(password && { password })
}
userWithPassword
Kesimpulan
Saya mencoba membuat daftar beberapa metode yang kurang terkenal untuk menggunakan operator lain dan menyebar. Jika Anda mengetahui metode lain yang tidak tercantum dalam daftar ini, silakan tulis tentang mereka di komentar. Jika artikel ini bermanfaat bagi Anda, silakan posting ulang untuk teman dan kenalan Anda.