14 lines
524 B
JavaScript
14 lines
524 B
JavaScript
|
export default function mergeByName(modifiers) {
|
||
|
var merged = modifiers.reduce(function (merged, current) {
|
||
|
var existing = merged[current.name];
|
||
|
merged[current.name] = existing ? Object.assign({}, existing, current, {
|
||
|
options: Object.assign({}, existing.options, current.options),
|
||
|
data: Object.assign({}, existing.data, current.data)
|
||
|
}) : current;
|
||
|
return merged;
|
||
|
}, {}); // IE11 does not support Object.values
|
||
|
|
||
|
return Object.keys(merged).map(function (key) {
|
||
|
return merged[key];
|
||
|
});
|
||
|
}
|