Как объединить javascript объект, содержащий символы? - PullRequest
2 голосов
/ 09 марта 2020

Я пытаюсь объединить два объекта с loda sh, но не работает с символами. Есть ли альтернативная утилита?

    import {merge} from 'lodash';
    import {Op} from 'sequelize';

    const selectA = {
        where: {
            text: "something"
        }
    };

    const selectB = {
        where: {
            date_from: {
                [Op.lt]: Sequelize.literal('NOW()')
            }
        }
    };

    console.log(_.merge(selectA, selectB));

Выход:

{ where: { text: 'something', date_from: {} } }

Ответы [ 2 ]

4 голосов
/ 09 марта 2020

Вы можете использовать _.mergeWith() и предоставить функцию слияния, которая использует распространение.

Примечание : посмотрите на консоль браузера. Консоль фрагмента не отображает символы.

const Op = {
  lt: Symbol('symbol')
}

const selectA = {
  num: 15,
  where: {
    text: "something"
  }
};

const selectB = {
  num: 30,
  where: {
    date_from: {
      [Op.lt]: 'symbol value'
    }
  }
};

const result = _.mergeWith(selectA, selectB, (a, b) => {
  if (!_.isObject(b)) return b;
  
  return Array.isArray(a) ? [...a, ...b] : { ...a, ...b }
});

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>
0 голосов
/ 09 марта 2020

Используйте глубокое погружение вместо lodash https://www.npmjs.com/package/deepmerge

...