首页 > 解决方案 > 将数组转换为具有相似键/值对的对象

问题描述

我有一个值数组如下

[
    {
      "factor": {
        "data": "f1",
        "val": [
          "val1"
        ]
      }
    },
    {
      "factor": {
        "data": "f2",
        "val": [
          "val2"
        ]
      }
    }
  ]

有没有办法将其转换为以下格式

{
    "keyvalue": {
        "factor": {
            "data": "f1",
            "val": ["val1"]
        },
        "factor": {
            "data": "f2",
            "val": ["val2"]
        }
    }
}

在这种情况下,对对象的标准数组解析不起作用,因为键必须是唯一的

标签: javascriptarraysjsonobject

解决方案


您可以做的是使用该data字段作为键,因为它始终是唯一的。

像这样的东西:

{
    "factor": {
        "f1": ["val1"],
        "f2": ["val2"]
    }
}

以下是如何将数组转换为键/值对象:

let keyValue = {"factor": {}};
theArray.forEach((item) => {
    const key = item.factor.data;
    const value = item.factor.val;
    keyValue.factor[key] = value;
});

现在keyValue对象与描述的一样。


推荐阅读