我有一个生成以下对象的函数:
const currentObject = {
labels: {
x1: "y1",
x2: "y2",
x3: "y3",
}
}
要在我的api中处理它,其格式应为:
const targetObject = {
labels: {
templatename:{
x1: "y1",
x2: "y2",
x3: "y3",
}
}
}
const templatename = this.props.templatename;
如何在const中以模板名称嵌套对象?
我不想粘贴一堆代码,这两个对象只是一个示例,第一个对象可以通过以下函数生成:
state = {
"labels": {
}
}
onChange = (e, key) => {
this.setState({
labels: {
...this.state.labels,
[key]: e.target.value
}
});
答案 0 :(得分:3)
您是说要使用动态键?您可以尝试:
<FlatList
data={this.state.menu}
keyExtractor={elem => elem.name}
renderItem={elem => (<View><Text>{elem.item.name}</Text></View>)}
/>
const targetObject = {
labels: {
[this.props.templatename]: { ...currentObject.labels }
}
};
答案 1 :(得分:1)
const updatedObj = {
labels: {
templatename: {
...currentObject.labels
}
}
}
答案 2 :(得分:1)
您可以尝试使用此功能,它是可测试的,并且可以处理任何属性和模板名称。
const currentObject = {
"labels": {
"x1": "y1",
"x2": "y2",
"x3": "y3",
}
}
function nestObjectByProperty(currentObj, propName, templateName){
return {
[propName]: {
[templateName]: currentObj[propName]
}
}
}
const targetObj = nestObjectByProperty(currentObject, 'labels', 'templatename')
console.log(targetObj)
答案 3 :(得分:1)
您可以创建一个新对象并使用Object.assign
const currentObject = {
"labels": {
"x1": "y1",
"x2": "y2",
"x3": "y3",
}
}
let newObj = Object.assign({}, {
currentObject: {
labels: {
templatename: currentObject.labels
}
}
});
console.log(newObj)