Щоб додати трохи спецій, привносячи продуктивність. Перевірте цю нитку нижче
https://github.com/googleapis/google-api-nodejs-client/issues/375
Використання оператора видалення негативно впливає на ефективність для шаблону прихованих класів V8. Загалом рекомендується не використовувати його.
Крім того, щоб видалити властивості об’єкта, що перелічуються, ми могли б створити нову копію об’єкта без цих властивостей (приклад використання lodash):
_.omit (o, 'prop', 'prop2')
Або навіть визначити значення властивості як null або undefined (що неявно ігнорується при серіалізації до 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
синтаксис для динамічних назв. А ви можете помістити все в дужки (новий блок), так що решта буде сміттям, зібраним після нього.
Ось тест:
exec:
Або ми можемо використовувати якусь функцію, наприклад
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;
}, {});
}
для машинопису
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]);
Невизначений не підходить для великого списку. Або розробка з часом із багатьма реквізитами. Оскільки використання пам’яті буде постійно зростати і ніколи не очищатиметься. Тож це залежить від використання. І просто створення нового об’єкта здається хорошим способом.
Тоді Premature optimization is the root of all evil
воля настане. Тож ви повинні знати про компроміс. І що потрібно, а що ні.
Примітка про _.omit () від lodash
Його видалено з версії 5. Ви не можете знайти його в репо. І тут питання, яке говорить про це.
https://github.com/lodash/lodash/issues/2930
v8
Ви можете перевірити це, що є гарним читанням https://v8.dev/blog/fast-properties