[英]ES6 Object Mapping
I was working on something but stuck at a point where I have inputs as -我正在做某事,但停留在我有输入的地方-
var definition = [ { "name": "objA", "type": "object", "items": [ { "value": "", "name": "A" }, { "value": "", "name": "B" }, { "value": "", "name": "C" } ] }, { "name": "objX", "type": "object", "items": [ { "value": "", "name": "X" }, { "value": "", "name": "Y" }, { "value": "", "name": "Z" } ] } ]; var data = { "objA": { "A": "ValA", "B": "ValB", "C": "ValC" }, "objX": { "X": "ValX", "Y": "ValY", "Z": "ValZ" } }; const updateSchema = (data, definition) => { definition.forEach((subDef) => { var node = data[subDef.name]; subDef.items.forEach((sub)=> { sub.value = node[sub.name] }); }); return definition; } console.log(updateSchema(data,definition))
The output I need is我需要的 output 是
[
{
"name": "objA",
"type": "object",
"items": [
{
"value": "valA",
"name": "A"
},
{
"value": "valB",
"name": "B"
},
{
"value": "valC",
"name": "C"
}
]
},
{
"name": "objX",
"type": "object",
"items": [
{
"value": "valX",
"name": "X"
},
{
"value": "valY",
"name": "Y"
},
{
"value": "valZ",
"name": "Z"
}
]
}
]
But it gives the output as -但它给出了 output 作为 -
[
{
"name": "objA",
"type": "object",
"items": [
{
"value": "ValX",
"name": "A"
},
{
"value": "ValY",
"name": "B"
},
{
"value": "ValY",
"name": "C"
}
]
},
{
"name": "objX",
"type": "object",
"items": [
{
"value": "ValX",
"name": "X"
},
{
"value": "ValY",
"name": "Y"
},
{
"value": "ValZ",
"name": "Z"
}
]
}
]
I am not able to know where I am doing wrong.我不知道我在哪里做错了。
I am using React with typescript.我将 React 与 typescript 一起使用。 I need to perform the above operation based on some API response.我需要根据一些 API 响应执行上述操作。 I am prepopulating some value in the form based on the API response.我正在根据 API 响应在表单中预填充一些值。
Try:尝试:
subDef.items.forEach((sub)=> {
sub.value = node[sub.name].charAt(0).toLowerCase() + node[sub.name].slice(1);
});
https://jsfiddle.net/j8nwpf6m/ https://jsfiddle.net/j8nwpf6m/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.