我有一个可以接受几个参数的函数,其中一个参数可以是一个内部具有更多属性的对象。像这样:
myFunction(res.columns, res.data, {
margin: {
top: 65
},
styles: {
overflow: 'linebreak',
},
columnStyles: {
1: {
columnWidth: 100
},
2: {
columnWidth: 80
}
}
}):
现在,我的问题是: 你可以看到其中的“columnStyles”有不同的索引,里面有一个属性及其值。问题在于,根据请求的类型,数字100和80会发生变化。我想要做的是一个开关案例,根据你得到的参数,我为这样的变量赋值:
switch (type) {
case 'components':
config = {
1: {
columnWidth: 100
},
2: {
columnWidth: 80
}
}
console.log(config);
break;
}
我想要做的是,在“columnStyles”中,只放置“config”并使其获取上面开关案例中分配的值,所以它会是这样的:
myFunction(res.columns, res.data, {
margin: {
top: 65
},
styles: {
overflow: 'linebreak',
},
columnStyles: {
config
}
}):
我所看到的是,在调试器控制台中,“config”的值是正确的,但它们没有被接受,也没有做任何事情。
任何想法或提示?
谢谢!
答案 0 :(得分:2)
为什么不将columnStyles
设置为config
?
myFunction(res.columns, res.data, {
margin: {
top: 65
},
styles: {
overflow: 'linebreak',
},
columnStyles: config
}):
除非我遗漏了某些内容,否则上述内容应该对你有用。
如果您希望config
中的合并与其他值,那么您可以使用Object.assign
或对象传播(...
)。
要合并,您可能希望这样做:
myFunction(res.columns, res.data, {
margin: {
top: 65
},
styles: {
overflow: 'linebreak',
},
columnStyles: Object.assign(existingConfig, config)
}):
或
myFunction(res.columns, res.data, {
margin: {
top: 65
},
styles: {
overflow: 'linebreak',
},
columnStyles: {
3: {
columnWidth: 123
},
4: {
columnWidth: 678
},
...config
}
});
*注意:如果没有一些转换帮助,某些版本的节点可能无法使用对象扩展语法:)
答案 1 :(得分:2)
只需写下
myFunction(res.columns, res.data, {
margin: {
top: 65
},
styles: {
overflow: 'linebreak',
},
columnStyles: config,
}):
你应该好。添加额外的大括号会将对象名称添加为属性:
{
margin: {
top: 65
},
styles: {
overflow: 'linebreak',
},
columnStyles: {
config: {
columnStyles: {...}
}
}
}