Saat kita perlu menyalin array, kita sering menggunakan slice. Tetapi dengan ES6, Anda juga dapat menggunakan operator spread untuk menduplikat array. Lumayan bagus kan 🤩
const sheeps = ['🐑', '🐑', '🐑'];
// Old way
const cloneSheeps = sheeps.slice();
// ES6 way
const cloneSheepsES6 = [...sheeps];
Mengapa Saya Tidak Dapat Menggunakan = untuk Menyalin Array?
Karena array di JS adalah nilai referensi, jadi ketika Anda mencoba menyalinnya menggunakan =
itu hanya akan menyalin referensi ke array asli dan bukan nilai array. Untuk membuat salinan asli dari array, Anda perlu menyalin nilai array di bawah variabel nilai baru. Dengan begitu array baru ini tidak merujuk ke alamat array lama di memori
const sheeps = ['🐑', '🐑', '🐑'];
const fakeSheeps = sheeps;
const cloneSheeps = [...sheeps];
console.log(sheeps === fakeSheeps);
// true --> it's pointing to the same memory space
console.log(sheeps === cloneSheeps);
// false --> it's pointing to a new memory space
_
Masalah dengan Nilai Referensi
Jika Anda pernah berurusan dengan Redux atau kerangka manajemen negara apa pun. Anda akan tahu bahwa kekekalan itu sangat penting. Izinkan saya menjelaskan secara singkat. Objek yang tidak dapat diubah adalah objek yang statusnya tidak dapat diubah setelah dibuat. Masalah dengan JavaScript adalah arrays
bisa berubah. Jadi ini bisa terjadi
const sheeps = ['🐑', '🐑'];
const sheeps2 = sheeps;
sheeps2.push('🐺');
console.log(sheeps2);
// [ '🐑', '🐑', '🐺' ]
// Ahhh 😱 , our original sheeps have changed?!
console.log(sheeps);
// [ '🐑', '🐑', '🐺' ]
Itu sebabnya kita perlu mengkloning sebuah array
const sheeps = ['🐑', '🐑'];
const sheeps2 = [...sheeps];
// Let's change our sheeps2 array
sheeps2.push('🐺');
console.log(sheeps2);
// [ '🐑', '🐑', '🐺' ]
// ✅ Yay, our original sheeps is not affected!
console.log(sheeps);
// [ '🐑', '🐑' ]
Tipe Data yang Dapat Diubah vs Tidak Dapat Diubah
Yg mungkin berubah
Kekal
Semua primitif tidak dapat diubah
- rangkaian
- nomor
- boolean
- batal
- belum diartikan
- simbol
Salinan Dangkal Saja
Harap dicatat spread
hanya sedalam satu level saat menyalin array. Jadi jika Anda mencoba menyalin array multidimensi, Anda harus menggunakan alternatif lain
const nums = [[1, 2], [10]];
const cloneNums = [...nums];
// Let's change the first item in the first nested item in our cloned array.
cloneNums[0][0] = '👻';
console.log(cloneNums);
// [ [ '👻', 2 ], [ 10 ], [ 300 ] ]
// NOOooo, the original is also affected
console.log(nums);
// [ [ '👻', 2 ], [ 10 ], [ 300 ] ]
_
🤓 Inilah hal menarik yang saya pelajari. Salinan dangkal berarti level pertama disalin, level yang lebih dalam direferensikan
Masukan Komunitas
const sheeps = ['🐑', '🐑', '🐑'];
const fakeSheeps = sheeps;
const cloneSheeps = [...sheeps];
console.log(sheeps === fakeSheeps);
// true --> it's pointing to the same memory space
console.log(sheeps === cloneSheeps);
// false --> it's pointing to a new memory space
_0 adalah Cara Lain untuk Mengkloning Array
const sheeps = ['🐑', '🐑', '🐑'];
const cloneSheeps = Array.from(sheeps);
_
_Terima kasih. @hakankaraduman_
_@hakankaraduman. _ ya, saya mencoba untuk tidak menggunakan spread, itu membuat saya bingung ketika membaca kode karena melakukan dua hal, menyebarkan atau mengumpulkan sesuai konteks
CJ J. Saya pikir cara terbaik adalah yang paling cocok dengan semantik operasi. Saya lebih suka menggunakan
const sheeps = ['🐑', '🐑', '🐑'];
const fakeSheeps = sheeps;
const cloneSheeps = [...sheeps];
console.log(sheeps === fakeSheeps);
// true --> it's pointing to the same memory space
console.log(sheeps === cloneSheeps);
// false --> it's pointing to a new memory space
_0
Bagaimana cara menetapkan array ke objek dalam JavaScript?
Cara Mengonversi Larik Menjadi Objek Menggunakan JavaScript .
Objek. menetapkan() fungsi
Ulangi array dan buat objek baru
Fungsi pengurangan()
Bagaimana Anda menetapkan array ke kunci objek?
Untuk mengonversi larik menjadi objek, kita akan membuat fungsi dan memberinya 2 properti, larik, dan kunci. const convertArrayToObject = (array, key) => {}; Kami kemudian akan mengurangi larik, dan membuat properti unik untuk setiap item berdasarkan kunci .
Bagaimana cara menetapkan nilai ke objek dalam JavaScript?
Demo JavaScript. Obyek. tetapkan() .
sumber const = { b. 4, c. 5 };
const dikembalikanTarget = Obyek. menetapkan (target, sumber);
menghibur. log(target); . Objek {a. 1, b. 4, c. 5 }
menghibur. log(returnedTarget === target); . BENAR
Bisakah Anda memiliki array di objek JavaScript?
Objek Array memungkinkan Anda menyimpan banyak nilai dalam satu variabel . Ini menyimpan kumpulan elemen berurutan ukuran tetap dari jenis yang sama. Array digunakan untuk menyimpan kumpulan data, tetapi seringkali lebih berguna untuk memikirkan array sebagai kumpulan variabel dengan tipe yang sama.