【问题标题】:How to convert object to array in js?如何在js中将对象转换为数组?
【发布时间】:2020-07-14 00:35:44
【问题描述】:

我有数组属性的对象。

const data = {
test:["1","2"],
test2:["1","2"]

}

我正在尝试转换这种格式。我正在使用 Object.values(data) ,我只能在其中使用 array 。我需要得到这种格式。

我的尝试代码:

让输出 = Object.values(data)

output : [{test:[{label:"1",value:"1"},{label:"2",value:"2"}]},{test2:[{label:"1",value:"1"},{label:"2",value:"2"}]]

【问题讨论】:

  • Object.values() 你唯一尝试过的吗?您是否尝试过任何其他代码? (如果有,请添加)
  • 我只是子数组的数组,但没有得到任何逻辑它将如何实现?
  • 对象中的数组是否总是由两个元素组成,还是可以有更多?
  • 我可以使用 Object.entries 获取两个数组吗
  • 我的问题是关于您对象中的 ["1", "2"] 值。看来您想从中创建一个对象数组[{label:"1",value:"2"}]。但是如果你有一个像["1", "2", "3", "4"] 这样的数组,你应该得到[{label:"1",value:"2"}, {label:"3",value:"4"}] 吗?或者,您一开始就不能拥有一个采用["1", "2", "3", "4"] 形式的数组吗?我问这个是因为你有一个包含一个对象的数组(数组的意义是什么?)

标签: javascript arrays object functional-programming


【解决方案1】:

您需要使用Object.entries 来访问键("test""test2" 等)和值(数组),然后映射具有labelvalue 属性的对象数组的值(基于)。

这样的……

const data = {
  test: ["1", "2"],
  test2: ["1", "2"]
}

let output = Object.entries(data).map(([ key, values ]) => ({
  [key]: values.map(v => ({ label: v, value: v }))
}))

console.info(output)

【讨论】:

  • 您的输出与我的输出不匹配。它会是 { "test2":[ { "label": "1", "value": "2" }] } 像这样
  • @sujon 哦,你想要一个冗余数组吗?这有点奇怪,但可以肯定的是,这很容易。我会更新我的答案
  • @sujon 已修复,但您确实应该提前提供正确的信息以及您已经尝试过的信息
  • @sujon 不,因为它已被删除
【解决方案2】:

使用Object.entriesmap 构建数组。

const format = obj =>
  Object.entries(obj).map(([key, arr]) => ({
    [key]: arr.map(value => ({
      label: value, value
    }))
  }));

const data = {
  test: ["1", "2"],
  test2: ["1", "2"]
};

console.log(format(data));

【讨论】:

猜你喜欢
  • 2020-07-18
  • 2012-05-07
  • 2022-08-08
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多