Как объединить два json файла
Они не гнездятся или что-то в этом роде. Просто в основном разные поля. Мне нужно объединить их в один JSON в node.js следующим образом:
Я могу использовать jQuery просто отлично. Вот рабочий пример в браузере:
Но если я делаю это в node.js, я не хочу загружать jQuery (что немного перегружено, плюс node.js 'jQuery не работает на моем Windows машина).
Так есть ли простой способ сделать что-то похожее на $.extend() без jQuery?
Это базовая отправная точка. Возможно, вы захотите добавить такие вещи, как проверка hasOwnProperty , или добавить некоторую логику для обработки случая, когда несколько исходных объектов имеют свойство с одинаковым идентификатором.
Дополнительное примечание: то, что вы называете "JSON", на самом деле являются обычными объектами JavaScript. JSON - это просто текстовый формат, который разделяет некоторый синтаксис с JavaScript.
Вы должны использовать " Object.assign () "
Нет необходимости изобретать велосипед для такого простого случая мелкого слияния.
Метод Object.assign () используется для копирования значений всех перечисляемых собственных свойств из одного или нескольких исходных объектов в целевой объект. Он вернет целевой объект.
_extend никогда не предназначался для использования вне внутренних модулей NodeJS. Сообщество все равно нашло и использовало его. Это устарело и не должно использоваться в новом коде. JavaScript поставляется с очень похожими встроенными функциями через Object.assign .
Обновление:
Вы можете использовать оператор распространения
Так как версия 8.6 , в Node.js. изначально можно использовать оператор распространения . Пример ниже:
Object.assign все еще работает, хотя.
PS1: Если вы действительно заинтересованы в deep merging (в котором данные внутренних объектов - на любой глубине - рекурсивно объединяются), вы можете использовать такие пакеты, как deepmerge , assign-deep или lodash.merge , которые довольно маленькие и простые в использовании .
PS2: имейте в виду, что Object.assign не работает с 0.X версиями Node.js. Если вы работаете с одной из этих версий (вы действительно не должны сейчас), вы можете использовать require("util")._extend , как показано в ссылке Node.js выше - для более подробной информации, проверьте ответ tobymackenzie на этот же вопрос .
Если используется версия узла> = 4, используйте Object.assign() (см. ответ Рикардо Нольде ).
Если используется Node 0.x, есть встроенный util._extend:
Если вы беспокоитесь об использовании «частного» метода, вы всегда можете прокси его:
и замените его собственной реализацией, если она когда-либо исчезнет. Это (приблизительно) их реализация:
Underscore extend это самый простой и быстрый способ достичь этого, как прокомментировал Джеймс.
Вот пример использования подчеркивания:
объект 1 получит свойства object2 и будет возвращен и назначен цели . Вы также можете сделать это так, в зависимости от того, возражаете ли вы против изменения объекта1:
Читайте также: