【问题标题】:How to transform an item into a key/value pair object in javascript?如何在javascript中将项目转换为键/值对对象?
【发布时间】:2019-12-21 20:22:37
【问题描述】:

我在将数据结构转换为键/值项时遇到问题。

我已经尝试了一些映射和转换,但我的控制台上没有显示我想要的输出。

我的函数有这个代码输出:

控制台: {BLAU: Array(1), ROT: Array(2)}

并打开:

控制台:

- BLAU: [{…}]
- ROT: (2) [{…}, {…}]

const vorher = [{
    BLAU: [{
      type: 'mytype1'
    }],
  },
  {
    ROT: [{
      type: 'mytype1'
    }],
    [{
      type: 'mytype2'
    }]
  }
];

我想要的输出应该是这样的:

const nachher = [{
    farbe: 'BLAU',
    typen: [{
      type: 'mytype1'
    }]
  },
  {
    farbe: 'ROT',
    typen: [{
      type: 'mytype1'
    }],
    [{
      type: 'mytype2'
    }]
  },
];

编辑:

我有这样的东西作为函数 [{…}, {…}, {…}] 的输出,它看起来像这样:

[ { id: 100, system: {id: 101, label: "BLAU", createdAt: "2019-07-30"}, details: [{...},{...}], info: "Test" }, { id: 400, system: {id: 404, label: "ROT", createdAt: "2019-07-30"}, details: [{...},{...}], info: "Test" } ]

我想通过 系统标签 与上面所需的输出对它进行分组。 GroupBy 只给我一个对象。

【问题讨论】:

  • 欢迎来到 Stack Overflow!请使用tour(您将获得徽章!)并通读help center,尤其是How do I ask a good question? 您最好的选择是进行研究,search 以获取有关 SO 的相关主题,然后试一试. 如果您在进行更多研究和搜索后遇到困难并且无法摆脱困境,请发布您的尝试minimal reproducible example,并具体说明您遇到的问题。人们会很乐意提供帮助。
  • ROT 不是正确的对象。先更正你的问题。
  • @AdamOrlov 对不起,这个例子不正确,现在更好了吗?
  • 外部对象中是否只有一个属性?
  • 为什么不typen: [{ type: 'mytype1' }, { type: 'mytype2' }]或更短:typen: ['mytype1','mytype2']

标签: javascript list arraylist


【解决方案1】:

您可以获取对象的第一个条目,将其解构为所需的键/值对并返回一个新对象。

const
    data = [{ BLAU: [{ type: 'mytype1' }] }, { ROT: [{ type: 'mytype1' }, { type: 'mytype2' }] }],
    result = data.map(o => {
        var [farbe, typen] = Object.entries(o)[0];
        return { farbe, typen };
    });

console.log(result);

【讨论】:

  • 如果我只有这个输入怎么办:{ BLAU: [{ type: 'mytype1' }] }, { ROT: [{ type: 'mytype1' }, { type: 'mytype2' } ] } 而不是 [{ BLAU: [{ type: 'mytype1' }] }, { ROT: [{ type: 'mytype1' }, { type: 'mytype2' }] }] ?或者我可以轻松地将上面的第一个转换为您的答案中显示的项目(数据)吗?
  • 你不能拥有这个。只是更多没有像数组这样的容器的对象。
  • 啊,好吧,我发现了我猜的错误。我的 GroupBy 输出与我上面描述的不同。我的输出是 { BLAU: [{ type: 'mytype1' }] }, { ROT: [{ type: 'mytype1' }, { type: 'mytype2' }] }
  • 它仍然错过了周围的数组。
  • 不幸的是我的 groupBy (ramda) 函数只给了我这个输出。它是作为返回类型的对象,而不是数组。你知道我能做些什么吗?
猜你喜欢
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多