Очень часто есть входной объект, который вам нужно скопировать в другой объект. Часто вам нужно скопировать некоторые свойства, и в результате вы получите очень похожий объект, но с меньшим количеством свойств.
Ссылка для деструктурирующего назначения здесь
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Object_destructuring
Предположим, у вас есть этот входной объект:
// an object with data
let oldObject = {
a: 'this is a',
b: 'this is b',
c: 'this is c',
d: 'this is d'
}
Вот как я это сделал:
let myNewObject = {
a: oldObject.a,
b: oldObject.b,
c: oldObject.c
}
Это тот, который я использовал:
// new version
let { a, b, c } = oldObject
let myNewObject = { a, b, c };
Этот, который я начинаю использовать, кажется, работает нормально:
// newer version
let myNewObject = { a, b, c } = oldObject;
Проблема с более новыми версиями заключается в том, что я объявляю переменные a, b и c. В этом случае нет проблем ( почти ), но что делать, если их имена input
, output
, temp
, i
или любое другое общее имя для переменных, которые могли быть уже заявлено в объеме.
Так что решение великолепно, но было бы еще лучше, если бы эти переменные каким-то образом создавались и уничтожались в этой строке и не были доступны в другом месте. myNewObject
должен быть доступен конечно.
Я пытался обернуть его в такую функцию, но не повезло вообще:
let myNewObject = (function() { return { a, b, c } = oldObject })();
let myNewObject = (function() { let temp = { a, b, c } = oldObject; return temp; })();
Так что я не уверен, каков наилучший способ достичь этого, я уже близко, но что-то упускаю.