Javascript 在新的obj中,使用ES6扩展表示法是最重要的
我有两个目标Javascript 在新的obj中,使用ES6扩展表示法是最重要的,javascript,object,ecmascript-6,Javascript,Object,Ecmascript 6,我有两个目标 const resolver = { Query: { hi() { return 'Hello Level Up'; } } }; const resolver2 = { Query: { resolutions() { return [ { _id: 'alksdfaqwef231adsf2', name: 'Get stuff done!' }
const resolver = {
Query: {
hi() {
return 'Hello Level Up';
}
}
};
const resolver2 = {
Query: {
resolutions() {
return [
{
_id: 'alksdfaqwef231adsf2',
name: 'Get stuff done!'
},
{
_id: 'wefqwefasdf',
name: 'Get stuff done 2!'
}
];
}
}
}
每当我做一些事情,比如:
const resolvers = { ...resolver, ...resolver2 };
第一个冲突解决程序被重写,只有当我使用console.log时,我才拥有它
{ Query: { resolutions: [Function: resolutions] } }
我希望它有:
{ Query: { hi: [Function: hi], resolutions: [Function: resolutions] } }
为了解决这个问题,我引入了一个名为
lodash
的包,并使用了merge
方法
const resolvers = merge(resolver, resolver2);
产出:
{ Query: { hi: [Function: hi], resolutions: [Function: resolutions] } }
为了解决这个问题,我引入了一个名为
lodash
的包,并使用了merge
方法
const resolvers = merge(resolver, resolver2);
产出:
{ Query: { hi: [Function: hi], resolutions: [Function: resolutions] } }
已经提到了,但这就是spread操作符的工作方式。要进行深度合并,您需要自己编写一个递归方法。或者使用一个非常流行的小型图书馆,名为 但在您的情况下,这将起作用:
const resolvers = {
Query: {
...resolver.Query,
...resolver2.Query
}
};
已经提到了,但这就是spread操作符的工作方式。要进行深度合并,您需要自己编写一个递归方法。或者使用一个非常流行的小型图书馆,名为 但在您的情况下,这将起作用:
const resolvers = {
Query: {
...resolver.Query,
...resolver2.Query
}
};
是的,它是故意这样做的。问题是什么?你期望会发生什么?你可能想要吗<代码>常量解析器={resolver,resolver2}代码>它的工作方式应该是这样的。
const resolvers={Query:{…resolver.Query,…resolver2.Query}
是的,它是通过设计实现的。问题是什么?你期望会发生什么?你可能想要吗<代码>常量解析器={resolver,resolver2}代码>它的工作方式应该是这样的。const resolvers={Query:{…resolver.Query,…resolver2.Query}
lodash是这类东西的一个非常好的库。lodash是这类东西的一个非常好的库。这绝对有效,我会给你答案,因为我在ES6中问过如何做,但是我最终使用了lodash。这绝对有效,我会给你答案,因为我在ES6中问过如何使用lodash,但我最终使用了lodash。