【问题标题】:How do i remove an un-needed Key from a Javascript object?如何从 Javascript 对象中删除不需要的密钥?
【发布时间】:2019-10-09 15:04:27
【问题描述】:

我是 javascript 新手,我正在使用 SilverStripe 和 GraphQL,它给了我边缘和节点:

这是一个充满对象的数组:

Genre: [
  { ID: "1", Title: "English", StudySubject: { "edges": [ { "node": { "ID": "4", "Title": "English"}}]}},
  { ID: "2", Title: "Maths", StudySubject: { "edges": [ { "node": { "ID": "4", "Title": "Maths"}}]}},
]

我想知道是否可以从每个对象中删除不需要的边缘和节点,这样我前端的点符号就更少了?

我希望它看起来像

Genre: [
  { ID: "1", Title: "English", StudySubject: { "ID": "4", "Title": "English"}},
  { ID: "2", Title: "Maths", StudySubject: { "ID": "4", "Title": "Maths"}},
]

【问题讨论】:

  • 您在对象中有重复的键,您可以在发布好的数据后检查吗?
  • 对象中只能有一个唯一键
  • 您的输入数组中有错误。
  • 我已经更正了您提供的输入对象,并在下面的代码中添加了 JSON 操作。 jsfiddle.net/ulric_469/fk38pjeq/3

标签: javascript arrays vue.js graphql silverstripe


【解决方案1】:

您的输入数据不准确。 JSON 数据结构中的同一级别不能有重复的键。下面的答案是修改您的数据结构。

const data = [
  {
    ID: 1, 
    Subject: 
      {
        edge : [
          {node: {ID : 1, Title: "English"}}
        ]
      }
  }, 
  {
    ID: 2, 
    Subject: {
        edge: [
           {node: {ID: 1, Title: "Maths"}}
        ]
     }
  }
];

const result = data.map(x => ({...x, Subject: x.Subject.edge[0].node}));
console.log(result);

【讨论】:

  • 是的,你说得对,我只是想在回家之前把这个问题甩掉。我应该有证据阅读它。我会编辑它,但也会检查你的答案谢谢!
猜你喜欢
  • 2023-01-29
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 2021-10-28
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
相关资源
最近更新 更多