You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

13 lines
524 B

  1. export default function mergeByName(modifiers) {
  2. var merged = modifiers.reduce(function (merged, current) {
  3. var existing = merged[current.name];
  4. merged[current.name] = existing ? Object.assign({}, existing, current, {
  5. options: Object.assign({}, existing.options, current.options),
  6. data: Object.assign({}, existing.data, current.data)
  7. }) : current;
  8. return merged;
  9. }, {}); // IE11 does not support Object.values
  10. return Object.keys(merged).map(function (key) {
  11. return merged[key];
  12. });
  13. }