简体   繁体   English

ES6 Object 映射

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM