可满足不同数量参数的composeObject函数?

时间:2018-08-19 18:18:18

标签: javascript ecmascript-6 compose

我有一个名为composeObject的函数,我经常使用它来组合其他对象中的对象,但是我意识到我在多个脚本中编写了很多代码,并且我想创建一个仅适用于所有情况。看看下面的样子:

const composeObject = (a, b, c, d, e, f) => Object.assign({}, a, b, c, d, e, f);

然后我这样称呼她

const Myobject =  composeObject(objA, objB, objC, objD, objE, objF);

问题是我有几个不同的对象,有时我需要这样称呼它:

const Myobject1 =  composeObject(objA, objB);

// or 

const Myobject2 =  composeObject(objA, objB, objC, objD);

我要解决的是:

const composeObject1 = (a, b) => Object.assign({}, a, b);

const composeObject2 = (a, b, c, d) => Object.assign({}, a, b, c, d);

我这样称呼他们:

const Myobject1 =  composeObject1(objA, objB);

const Myobject2 =  composeObject2(objA, objB, objC, objD);

但是,有多个对象,而不仅仅是两个,这变得很烦人。您将如何编写可满足不同数量参数的composeObject函数?

1 个答案:

答案 0 :(得分:4)

您可以使用REST语法获得相同的结果:

const composeObject = (...objs) => Object.assign({},...objs);

let mergedObj = composeObject({a:1},{b:2});
let mergedObjTwo =  composeObject({a:1},{b:2},{c:5});

console.log(mergedObj);
console.log(mergedObjTwo);