【问题标题】:How can I get the sites name data from JSON data如何从 JSON 数据中获取站点名称数据
【发布时间】:2021-08-23 11:50:49
【问题描述】:

如何获取带有整个Formdata 数组的sites name 数据值?

预期输出:

["TEST-TRIAL-001120", 
 "Mubashir Test Site - 001001", 
 "TEST-TRIAL-001120", 
 "TEST SITE -001"]

const Formdata = [{
    "id": "6efcf3f7-5d29-4a88-8ce9-346229a86765",
    "title": "Deepak test form 2",
    "version": "1",
    "sites": [{
      "id": "d7f2b290-2820-401a-a347-9a4dd05ec02b",
      "name": "TEST-TRIAL-001120"
    }],
    "status": "Not Linked"
  },
  {
    "id": "89e5a12d-913d-4f5d-a030-b172af9e27f0",
    "title": "Deepak Test form 1",
    "version": "1",
    "sites": [],
    "status": "Not Linked"
  },
  {
    "id": "79a15768-762e-4ff8-b565-31274a38b22d",
    "title": "1.7 Form",
    "version": "1",
    "sites": [{
      "id": "32369d1d-f247-4a75-8c14-490c8393dbb8",
      "name": "Mubashir Test Site - 001001"
    }, {
      "id": "d7f2b290-2820-401a-a347-9a4dd05ec02b",
      "name": "TEST-TRIAL-001120"
    }, {
      "id": "a6526163-3ed7-4125-8f32-e0066fc6fe24",
      "name": "TEST SITE -001"
    }],
    "status": "Not Linked"
  }
]
Formdata.map(form => {
  console.log(form.sites); //not understand how to get sites name data value
});

【问题讨论】:

  • 您正在记录文字文本。你需要console.log(form.sites);
  • 您能详细说明您的预期输出吗? JavaScript 对象是键值存储,而不是字符串数组。你的意思是用方括号代替吗?
  • 我只在输出中显示站点名称。 https://stackoverflow.com/users/269970/esqew
  • 如果您想回复用户,请使用@ 和他们的用户名。输入@ 和前三个字母左右,然后是 Tab,它应该会自动完成。例如,输入@her<Tab>,它应该会自动完成@HereticMonkey(没有代码格式,我在此处添加以进行说明),这会提醒我您已回复我。指向我的用户个人资料的链接不会这样做。

标签: javascript arrays json object


【解决方案1】:

map 覆盖站点数组以获取名称数组then flattening that array

const Formdata=[{id:"6efcf3f7-5d29-4a88-8ce9-346229a86765",title:"Deepak test form 2",version:"1",sites:[{id:"d7f2b290-2820-401a-a347-9a4dd05ec02b",name:"TEST-TRIAL-001120"}],status:"Not Linked"},{id:"89e5a12d-913d-4f5d-a030-b172af9e27f0",title:"Deepak Test form 1",version:"1",sites:[],status:"Not Linked"},{id:"79a15768-762e-4ff8-b565-31274a38b22d",title:"1.7 Form",version:"1",sites:[{id:"32369d1d-f247-4a75-8c14-490c8393dbb8",name:"Mubashir Test Site - 001001"},{id:"d7f2b290-2820-401a-a347-9a4dd05ec02b",name:"TEST-TRIAL-001120"},{id:"a6526163-3ed7-4125-8f32-e0066fc6fe24",name:"TEST SITE -001"}],status:"Not Linked"}];

const result = Formdata.flatMap(({ sites }) => {
  return sites.map(({ name }) => name);
});

console.log(result);

其他文档

【讨论】:

    【解决方案2】:

    我使用flatMapmap

    const Formdata = [{ "id": "6efcf3f7-5d29-4a88-8ce9-346229a86765", "title": "Deepak test form 2", "version": "1", "sites": [{ "id": "d7f2b290-2820-401a-a347-9a4dd05ec02b", "name": "TEST-TRIAL-001120" }], "status": "Not Linked" }, { "id": "89e5a12d-913d-4f5d-a030-b172af9e27f0", "title": "Deepak Test form 1", "version": "1", "sites": [], "status": "Not Linked" }, { "id": "79a15768-762e-4ff8-b565-31274a38b22d", "title": "1.7 Form", "version": "1", "sites": [{ "id": "32369d1d-f247-4a75-8c14-490c8393dbb8", "name": "Mubashir Test Site - 001001" }, { "id": "d7f2b290-2820-401a-a347-9a4dd05ec02b", "name": "TEST-TRIAL-001120" }, { "id": "a6526163-3ed7-4125-8f32-e0066fc6fe24", "name": "TEST SITE -001" }], "status": "Not Linked" } ];
    
    const sites = Formdata.flatMap(({sites}) => sites.map(({name}) => name))
    
    
    console.log(sites)

    【讨论】:

    【解决方案3】:

    首先map 每个表单中的站点名称。这为您留下了需要展平的数组数组,可以使用 concatflatMap

    const Formdata = [{"id": "6efcf3f7-5d29-4a88-8ce9-346229a86765","title": "Deepak test form 2","version": "1","sites": [{"id": "d7f2b290-2820-401a-a347-9a4dd05ec02b","name": "TEST-TRIAL-001120"}],"status": "Not Linked"},{"id": "89e5a12d-913d-4f5d-a030-b172af9e27f0","title": "Deepak Test form 1","version": "1","sites": [], "status": "Not Linked"},{"id": "79a15768-762e-4ff8-b565-31274a38b22d","title": "1.7 Form","version": "1","sites": [{"id": "32369d1d-f247-4a75-8c14-490c8393dbb8","name": "Mubashir Test Site - 001001"}, {"id": "d7f2b290-2820-401a-a347-9a4dd05ec02b","name": "TEST-TRIAL-001120"}, {"id": "a6526163-3ed7-4125-8f32-e0066fc6fe24","name": "TEST SITE -001"}],"status": "Not Linked"}]
    
    let sites = [].concat.apply([],
      Formdata.map(data =>
        data.sites.map(site => site.name)
      )
    )
    /*let sites = Formdata.map(data =>
        data.sites.map(site => site.name)
      ).flatMap(x=>x)*/
    console.log(sites)

    【讨论】:

    猜你喜欢
    • 2016-11-05
    • 2016-05-13
    • 2021-12-01
    • 2018-06-01
    • 1970-01-01
    • 2020-08-02
    • 2014-03-29
    • 2011-10-30
    • 1970-01-01
    相关资源
    最近更新 更多