Другой альтернативой destructuring
будет использование delete
.Следующее решение снижает сложность времени примерно на 35% по сравнению с destructuring
(в Desktop Chrome)
Решение
let obj = {foo: 1, bar: 2, baz: 3}
function removeProperty(obj, propertyName) {
let newObj = {...obj};
delete newObj[propertyName];
return newObj;
}
console.log(removeProperty(obj, 'foo'));
Тест производительности
https://jsperf.com/so53753276
Результаты могут отличаться в зависимости от используемого браузера.Результаты довольно интригующие.Desktop Safari destructuring
превосходит delete
, но Desktop Chrome out выполняет все показатели из Desktop Safari.
+-----------------------------------+
| Browser | delete | destructure |
+---------+-----------+-------------+
| Chrome | 3,229,791 | 1,993,256 |
| Safari | 1,186,679 | 1,872,396 |
+---------+-----------+-------------+
Результаты на iOS менее удивительны, поскольку Chrome - это действительно Safari под капотом.
+-----------------------------------+
| Browser | delete | destructure |
+---------+-----------+-------------+
| Chrome | 1,146,496 | 1,785,551 |
| Safari | 1,182,067 | 1,793,772 |
+---------+-----------+-------------+
Документация
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete