Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Memastikan Objek Unik Apabila Menggunakan Array.prototype.fill()?

Bagaimanakah Saya Boleh Memastikan Objek Unik Apabila Menggunakan Array.prototype.fill()?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-18 16:50:20338semak imbas

How Can I Ensure Unique Objects When Using Array.prototype.fill()?

Array.prototype.fill(): Melepasi Objek sebagai Rujukan

Kaedah Array.prototype.fill() ialah utiliti yang mudah untuk memulakan tatasusunan dengan nilai yang ditentukan. Walau bagaimanapun, apabila mengisi tatasusunan dengan objek, objek diluluskan sebagai rujukan dan bukannya membuat kejadian baharu. Tingkah laku ini menimbulkan persoalan sama ada terdapat cara untuk memastikan setiap elemen tatasusunan ialah objek unik.

Pertimbangkan contoh berikut:

var arr = new Array(2).fill({});
console.log(arr[0] === arr[1]); // true

Dalam contoh ini, dua objek dicipta dan diluluskan sebagai rujukan kepada arr[0] dan arr[1]. Mengubah suai satu elemen tatasusunan akan mempengaruhi yang lain, kerana ia adalah objek yang sama:

arr[0].test = 'string';
console.log(arr[1].test); // 'string'

Untuk mencipta objek baharu bagi setiap elemen tatasusunan menggunakan Array.prototype.fill(), anda boleh mengikuti langkah berikut:

  1. Isi tatasusunan dengan sebarang nilai arbitrari (cth., tidak ditentukan) menggunakan fill() kaedah.
  2. Gunakan kaedah map() untuk mencipta tatasusunan baharu dengan kejadian baharu jenis objek yang diingini:
var arr = new Array(2).fill().map(u => ({}));

Pendekatan ini memastikan setiap elemen tatasusunan adalah objek yang berbeza, diasingkan daripada yang lain:

arr[0].test = 'string';
console.log(arr[1].test); // undefined

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memastikan Objek Unik Apabila Menggunakan Array.prototype.fill()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn