Дополнительно
Можно ли деструктурировать на существующий объект? (В JavaScript ES6 в)
Например, если у меня есть два объекта:
var foo = {
x: "bar",
y: "baz"
}
и
var oof = {}
и я хотел бы передать значения X и y из Foo в ооф. Есть ли способ сделать это, используя синтаксис ES6 в деструктурируется?
возможно, что-то вроде:
oof{x,y} = foo
105
16
Хотя некрасиво и немного повторяющиеся, вы можете сделать
который будет читать два значения класса
Foo
объект, и записать их в соответствующие места наобъект ооф
.Лично я'd по-прежнему достаточно прочитал
или
хотя.
Нет, деконструкция не поддерживает выражения членов в shorthands, но только простой propertynames в настоящее время. Есть разговоры о таких на esdiscuss, но никаких предложений в ЕС6.
Вы могли бы использовать Object
.assign
однако - если вы Don'т нужна все собственные свойства, вы все еще можете сделатьИМО это самый простой способ для достижения того, что вы'вновь ищу:
В основном, деструктурировать в переменные, а затем использовать инициализатор стенографии, чтобы сделать новый объект. Нет необходимости для объекта`.назначить
Я думаю, это самый четкий способ, в любом случае. Настоящим вы можете выбрать точную реквизит из
someObject
, что вы хотите. Если у вас есть существующий объект, вы просто хотите объединить в реквизит, сделать что-то вроде этого:Еще один, пожалуй, чище, способ, чтобы написать это:
Я использую это для
POST
запросов много, где мне нужно всего несколько штук дискретных данных. Но, я согласен, должен быть один лайнер для этого.Другие, чем объект.назначить там объект распространения синтаксис, который является этапом предложение 2 для ECMAScript.
Но для использования этой функции вы должны использовать
Этап 2
илипреобразования объекта-остальное-выкладываю плагин для Бабеля. Вот это [Demo на Бабеля с
Этап 2`]2Плагин BabelJS
Если вы используете BabelJS Теперь вы можете активировать плагин
Вавилон-плагин-преобразовывать объект из-деконструкция
(см. НПМ пакет для установки и использования).У меня была такая же проблема описана в этой теме и для меня это было очень утомительно, когда вы создаете объект из деструктурируется выражение, особенно, когда вы должны переименовать, добавить или удалить свойство. С помощью этого плагина поддержание таких случаях становится гораздо легче.
Объекта## пример
может быть записан как:
Примеру выбора
может быть записан как:
Это's совершенно возможно. Просто не в одном заявлении.
(Отметим в скобках рядом с оператором.) Но имейте в виду удобочитаемость является более важным, чем код-гольф :).
Источник: http://exploringjs.com/es6/ch_destructuring.html#sec_assignment-targets
Вы можете просто использовать перестройку для этого такой:
Или объединить оба объекта, если ооф имеет значения:
Вы можете вернуть объект деструктурированных в функции стрелочку, и объект использования.назначение (), чтобы присвоить его переменной.
Сухой
или
Это самый четкий и короткий решение, которое я мог придумать:
Он будет выводить
{ isValidDate: 'Да' }
Было бы неплохо, чтобы однажды быть в состоянии сказать что-то вроде `Давай newProps = ({ isValidDate } = реквизит) - но к сожалению это не то, ЕС6 поддерживает.
Я придумал этот способ:
Которые вы можете использовать такой:
т. е., вы можете выбрать, какие свойства вы хотите, и положить их в новый объект. В отличие от
_.выберите
вы также можете переименовать их в то же время.Если вы хотите скопировать реквизит на существующий объект, просто установите
назначение
арг.Это работает в Chrome 53.0.2785.89
Это's не красивый способ, и я рекомендую его, но это'ы можно вот так, просто для знания.
Вы можете уничтожить объект присвоения непосредственно к другой атрибут объекта.
Рабочий пример:
в
в
Вы можете работать с уничтожением используя переменные с тем же именем атрибута объекта, который вы хотите поймать, таким образом, вы Дон'т нужно сделать:
пусть пользователь = { имя: 'Майк' } пусть { имя } = пользователь;
Использовать этот способ:
пусть пользователь = { имя: 'Майк' } пусть { имя } = пользователь;
Таким же образом вы можете установить новые значения для структуры объектов, если они имеют одинаковое имя атрибута.
Посмотрите этот рабочий пример:
в
в
Это своего рода обман, но вы можете сделать что-то подобное...
На практике, я думаю, что вы'г редко хочу использовать это, хотя. Следующий гораздо более понятна... но не так весело.
Другой, совершенно другой маршрут, который включает возни с прототипом (осторожно...):
Вы можете использовать методы JSON в класс, чтобы достичь его следующим образом
Свойства проходить, что нужно добавить в полученный объект в качестве второго аргумента функции преобразовать в строки в формате массива.
МДН док для JSON.преобразовать в строки