【问题标题】:How to create new object by making a value as key from another object?如何通过将值作为另一个对象的键来创建新对象?
【发布时间】:2019-11-22 11:26:08
【问题描述】:

我有一个对象,我试图通过将所有相同的值作为键来创建一个新对象。例如,

data = [
    {
        "sum(PendingBenNotValidated)": 35.0,
        "stateName": "Andaman & Nicobar Islands",
        "diagMonth": 4,
        "diagYear": 2018,
        "TypeOfPatient": "IndiaTbPrivate"
    },
    {
        "sum(PendingBenNotValidated)": 8.0,
        "stateName": "Andaman & Nicobar Islands",
        "diagMonth": 5,
        "diagYear": 2018,
        "TypeOfPatient": "IndiaTbPrivate"
    },
    {
        "sum(PendingBenNotValidated)": 19.0,
        "stateName": "Andaman & Nicobar Islands",
        "diagMonth": 7,
        "diagYear": 2018,
        "TypeOfPatient": "IndiaTbPrivate"
    },
    {
        "sum(PendingBenNotValidated)": 16.0,
        "stateName": "Andaman & Nicobar Islands",
        "diagMonth": 8,
        "diagYear": 2018,
        "TypeOfPatient": "IndiaTbPrivate"
    },
    {
        "sum(PendingBenNotValidated)": 1.0,
        "stateName": "Andhra Pradesh",
        "diagMonth": 1,
        "diagYear": 2018,
        "TypeOfPatient": "IndiaTbPrivate"
    },
    {
        "sum(PendingBenNotValidated)": 0.0,
        "stateName": "Andhra Pradesh",
        "diagMonth": 2,
        "diagYear": 2018,
        "TypeOfPatient": "IndiaTbPrivate"
    }]

我必须使用 stateName 作为键来获取我的新对象,如下所示:

new data = [{Andaman & Nicobar Islands: [{PendingBenNotValidated: 35, diagMonth: 4, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"},{PendingBenNotValidated: 19, diagMonth: 7, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"}], Andhra Pradesh: [{PendingBenNotValidated: 0, , diagMonth: 2, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"}]

关于如何做到这一点的任何想法?

【问题讨论】:

  • 你有任何代码尝试这样做吗?您应该尝试迭代 data 数组并通过 item 键将项目存储在另一个对象中
  • 首先data不是一个有效的对象。先解决这个问题,这样我们才能准确地知道你的对象是什么样子

标签: javascript arrays dictionary lodash


【解决方案1】:

首先,您需要修复您的 data 属性,因为它无效。 然后您只需遍历数组并根据stateName 属性生成一个新对象。

var data = [
{PendingBenNotValidated: 35, stateName: "Andaman & Nicobar Islands", diagMonth: 4, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"},
{PendingBenNotValidated: 8, stateName: "Andaman & Nicobar Islands", diagMonth: 5, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"},
{PendingBenNotValidated: 19, stateName: "Andaman & Nicobar Islands", diagMonth: 7, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"},
{PendingBenNotValidated: 16, stateName: "Andaman & Nicobar Islands", diagMonth: 8, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"},
{PendingBenNotValidated: 9, stateName: "Andaman & Nicobar Islands", diagMonth: 9, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"},
{PendingBenNotValidated: 9, stateName: "Andaman & Nicobar Islands", diagMonth: 10, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"},
{PendingBenNotValidated: 16, stateName: "Andaman & Nicobar Islands", diagMonth: 11, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"},
{PendingBenNotValidated: 12, stateName: "Andaman & Nicobar Islands", diagMonth: 12, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"},
{PendingBenNotValidated: 1, stateName: "Andhra Pradesh", diagMonth: 1, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"},
{PendingBenNotValidated: 0, stateName: "Andhra Pradesh", diagMonth: 2, diagYear: 2018, TypeOfPatient: "IndiaTbPrivate"}];

let entries = {};
data.map( (e) => entries[e.stateName] = e );
console.log(entries);

【讨论】:

    猜你喜欢
    • 2018-10-28
    • 1970-01-01
    • 2021-01-16
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    相关资源
    最近更新 更多