เพื่อเพิ่มเครื่องเทศที่นำมาซึ่งประสิทธิภาพ ตรวจสอบการร้องของกระทู้นี้
https://github.com/googleapis/google-api-nodejs-client/issues/375
การใช้ตัวดำเนินการลบมีผลเสียด้านประสิทธิภาพสำหรับรูปแบบคลาส V8 ที่ซ่อนอยู่ โดยทั่วไปไม่แนะนำให้ใช้
อีกวิธีหนึ่งในการลบคุณสมบัติที่สามารถระบุได้ของตัวเองเราสามารถสร้างสำเนาวัตถุใหม่โดยไม่มีคุณสมบัติเหล่านั้น (ตัวอย่างเช่นการใช้ lodash):
_.omit (o, 'prop', 'prop2')
หรือแม้กระทั่งกำหนดค่าคุณสมบัติเป็นค่าว่างหรือไม่ได้กำหนด (ซึ่งจะถูกละเว้นโดยปริยายเมื่อทำให้อนุกรมกับ JSON):
o.prop = ไม่ได้กำหนด
คุณสามารถใช้วิธีทำลายล้างมากเกินไป
const {remov1, remov2, ...new} = old;
old = new;
และตัวอย่างที่เป็นประโยชน์มากขึ้น:
this._volumes[this._minCandle] = undefined;
{
const {[this._minCandle]: remove, ...rest} = this._volumes;
this._volumes = rest;
}
ดังที่คุณเห็นคุณสามารถใช้[somePropsVarForDynamicName]: scopeVarName
ไวยากรณ์สำหรับชื่อไดนามิก และคุณสามารถใส่ทั้งหมดในวงเล็บ (บล็อกใหม่) ดังนั้นส่วนที่เหลือจะถูกเก็บรวบรวมหลังจากนั้น
นี่คือการทดสอบ:
ผู้บริหาร:
หรือเราสามารถใช้ฟังก์ชันบางอย่างเช่น
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;
}, {});
}
สำหรับ typescript
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;
}, {});
}
การใช้งาน:
let a = {propH: 'hi', propB: 'bye', propO: 'ok'};
a = deleteProps(a, 'propB');
a = deleteProps(a, ['propB', 'propO']);
วิธีนี้สร้างวัตถุใหม่ และทรัพย์สินที่รวดเร็วของวัตถุจะถูกเก็บไว้ ซึ่งอาจมีความสำคัญหรือมีความสำคัญ หากการแมปและวัตถุจะถูกเข้าถึงหลายครั้ง
การเชื่อมโยงundefined
อาจเป็นวิธีที่ดี เมื่อคุณสามารถจ่ายได้ และสำหรับคีย์คุณสามารถตรวจสอบค่าได้เช่นกัน ตัวอย่างเช่นเพื่อรับคีย์ที่ใช้งานทั้งหมดที่คุณทำเช่น:
const allActiveKeys = Object.keys(myObj).filter(k => myObj[k] !== undefined);
const allActiveKeys = Object.keys(myObj).filter(k => myObj[k]);
Undefined ไม่เหมาะสำหรับรายการใหญ่ หรือการพัฒนาตามเวลาที่มีอุปกรณ์ประกอบฉากมากมายเข้ามาเนื่องจากการใช้งานหน่วยความจำจะเติบโตขึ้นเรื่อย ๆ และจะไม่มีวันได้รับการทำความสะอาด ดังนั้นจึงขึ้นอยู่กับการใช้งาน และการสร้างวัตถุใหม่ดูเหมือนจะเป็นวิธีที่ดี
จากนั้นPremature optimization is the root of all evil
จะเริ่มต้นขึ้นดังนั้นคุณต้องระวังการแลกเปลี่ยน และสิ่งที่จำเป็นและสิ่งที่ไม่
หมายเหตุเกี่ยวกับ _.omit () จาก lodash
มันถูกลบออกจากเวอร์ชัน 5 คุณไม่พบมันใน repo และนี่คือประเด็นที่พูดถึง
https://github.com/lodash/lodash/issues/2930
v8
คุณสามารถตรวจสอบสิ่งนี้ซึ่งเป็นการอ่านที่ดีhttps://v8.dev/blog/fast-properties