【问题标题】:How to create array of objects from array: javascript [duplicate]如何从数组创建对象数组:javascript [重复]
【发布时间】:2021-11-23 16:10:08
【问题描述】:

我正在尝试将元素数组转换为 Javascript 中的对象数组(反应) 这是我从 API 获取的数据

"versions": [
    "1.0.1.2",
    "1.0.22.0",
    "1.1.0.12",
    "2.5.2.6",
    "2.5.2.7",
    "2.7.5.11",
    "2.7.7.7",
    "3.9.2.94",
    "3.9.3",
    "5.2.0.87",
    "9.5.0.210" ]

我正在尝试转换为应该如下所示的对象数组

options = [
    { value: "1.0.1.2", label: "1.0.1.2" },
    { value: "1.0.22.0", label: "1.0.22.0" },
    { value: "2.5.2.6", label: "2.5.2.6" },
];

我尝试使用地图功能

versions = VersionloginData.data.versions.map((version) => [version.value, version.label])

但效果不佳,我被不确定为值对象

【问题讨论】:

  • map(version => ({ value: version, label: version })?

标签: javascript reactjs


【解决方案1】:

您需要在地图回调中返回一个对象:

versions = VersionloginData.data.versions.map((version) => ({ value: version, label: version }))

【讨论】:

  • 你救了我的命,谢谢,实际上我在没有回调的情况下尝试了这个,比如versions = VersionloginData.data.versions.map((version) => { value: version, label: version })
  • @Naveen 您评论中的代码无效。您需要将() 放在{} 周围才能返回一个对象
  • 知道了,谢谢
【解决方案2】:

应该是的。

const data = {
  "versions": [
    "1.0.1.2",
    "1.0.22.0",
    "1.1.0.12",
    "2.5.2.6",
    "2.5.2.7",
    "2.7.5.11",
    "2.7.7.7",
    "3.9.2.94",
    "3.9.3",
    "5.2.0.87",
    "9.5.0.210"]
}
const output = data.versions.map(item => ({ value: item, label: item }));
console.log(output);

为什么您的代码不起作用?

您正在使用[version.value, version.label] 访问不正确的节点。 valuelabelversion 上不存在。相反,您应该返回一个对象,其键 valuelabel 具有相同的值。

【讨论】:

  • 感谢您的解释
  • 如果这解决了您的问题,请批准此答案并关闭此线程。
【解决方案3】:

你可以试试这个

var options = [] 
versions.forEach((v)=>{
  options.push({
    value: v,
    label: v,
   })
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-20
    • 2021-12-05
    • 2015-10-06
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    相关资源
    最近更新 更多