Untuk menambahkan beberapa bumbu membawa Kinerja. Periksa utas ini di bawah
https://github.com/googleapis/google-api-nodejs-client/issues/375
Penggunaan operator delete memiliki efek negatif kinerja untuk pola kelas tersembunyi V8. Secara umum disarankan untuk tidak menggunakannya.
Alternatifnya, untuk menghapus properti enumerable milik objek, kita dapat membuat salinan objek baru tanpa properti tersebut (contoh menggunakan lodash):
_.omit (o, 'prop', 'prop2')
Atau bahkan tentukan nilai properti menjadi null atau undefined (yang secara implisit diabaikan saat membuat serial ke JSON):
o.prop = tidak ditentukan
Anda juga bisa menggunakan cara yang merusak
const {remov1, remov2, ...new} = old;
old = new;
Dan contoh yang lebih praktis:
this._volumes[this._minCandle] = undefined;
{
const {[this._minCandle]: remove, ...rest} = this._volumes;
this._volumes = rest;
}
Seperti yang Anda lihat, Anda dapat menggunakan [somePropsVarForDynamicName]: scopeVarName
sintaks untuk nama dinamis. Dan Anda bisa meletakkan semua dalam tanda kurung (blok baru) sehingga sisanya akan dikumpulkan setelah itu.
Berikut tesnya:
eksekutif:
Atau kita bisa pergi dengan beberapa fungsi seperti
function deleteProps(obj, props) {
if (!Array.isArray(props)) props = [props];
return Object.keys(obj).reduce((newObj, prop) => {
if (!props.includes(prop)) {
newObj[prop] = obj[prop];
}
return newObj;
}, {});
}
untuk naskah ketikan
function deleteProps(obj: Object, props: string[]) {
if (!Array.isArray(props)) props = [props];
return Object.keys(obj).reduce((newObj, prop) => {
if (!props.includes(prop)) {
newObj[prop] = obj[prop];
}
return newObj;
}, {});
}
Pemakaian:
let a = {propH: 'hi', propB: 'bye', propO: 'ok'};
a = deleteProps(a, 'propB');
a = deleteProps(a, ['propB', 'propO']);
Dengan cara ini objek baru dibuat. Dan properti cepat dari objek disimpan. Yang bisa penting atau penting. Jika pemetaan dan objek akan diakses berkali-kali.
Juga bergaul undefined
bisa menjadi cara yang baik untuk dilakukan. Bila Anda mampu membelinya. Dan untuk kunci Anda juga dapat memeriksa nilainya. Misalnya untuk mendapatkan semua kunci aktif Anda melakukan sesuatu seperti:
const allActiveKeys = Object.keys(myObj).filter(k => myObj[k] !== undefined);
const allActiveKeys = Object.keys(myObj).filter(k => myObj[k]);
Undefined tidak cocok untuk daftar besar. Atau pengembangan dari waktu ke waktu dengan banyak props yang akan masuk. Karena penggunaan memori akan terus bertambah dan tidak akan pernah dibersihkan. Jadi tergantung dari penggunaannya. Dan hanya membuat objek baru sepertinya merupakan cara yang baik.
Kemudian Premature optimization is the root of all evil
akan dimulai. Jadi, Anda perlu waspada terhadap trade off. Dan apa yang dibutuhkan dan apa yang tidak.
Catatan tentang _.omit () dari lodash
Ini dihapus dari versi 5. Anda tidak dapat menemukannya di repo. Dan di sini ada masalah yang membicarakannya.
https://github.com/lodash/lodash/issues/2930
v8
Anda dapat memeriksa ini yang merupakan bacaan yang baik https://v8.dev/blog/fast-properties