lodashを使用してネストされたプロパティでグループ化する方法は?

Thamaraiselvam

オブジェクトの配列があります

{
    "work": [{
            "_id": "5c80c5c00c253823fc443337",
            "start": "2019-01-01T18:30:00.000Z",
            "end": "2019-01-02T18:30:00.000Z",
            "employee": {
                "_id": "5c80c16e0c253823fc44332a",
                "status": "active",
                "location": "Chennai",
                "contact_number": "1234567890"
            },
            "allocation": 30
        },
        {
            "_id": "5c80c5ef0c253823fc443339",
            "start": "2018-12-31T18:30:00.000Z",
            "end": "2019-09-30T18:30:00.000Z",
            "employee": {
                "_id": "5c80c16e0c253823fc44332a",
                "status": "active",
                "location": "Chennai",
                "contact_number": "1234567890"
            },
            "allocation": 100
        },
        {
            "_id": "5c80c60b0c253823fc44333a",
            "start": "2018-12-31T18:30:00.000Z",
            "end": "2020-10-07T18:30:00.000Z",
            "employee": {
                "_id": "5c80c16e0c253823fc44332a",
                "status": "active",
                "location": "Chennai",
                "contact_number": "1234567890"
            },
            "allocation": 25
        },
        {
            "_id": "5c80c65e0c253823fc44333b",
            "start": "2019-01-01T18:30:00.000Z",
            "end": "2019-10-04T18:30:00.000Z",
            "employee": {
                "_id": "5c80c1940c253823fc44332b",
                "status": "active",
                "location": "Chennai",
                "contact_number": "1234567890"
            },
            "allocation": 50
        },
        {
            "_id": "5c80c7240c253823fc44333f",
            "start": "2018-12-31T18:30:00.000Z",
            "end": "2019-10-09T18:30:00.000Z",
            "employee": {
                "_id": "5c80c26e0c253823fc44332e",
                "status": "active",
                "location": "Chennai",
                "contact_number": "1234567890"
            },
            "allocation": 25
        }
    ]
}

私はそれらをに変換する必要があります

[{
    "_id": "5c80c16e0c253823fc44332a",
    "status": "active",
    "location": "Chennai",
    "contact_number": "1234567890",
    "work": [{
        "_id": "5c80c5c00c253823fc443337",
        "start": "2019-01-01T18:30:00.000Z",
        "end": "2019-01-02T18:30:00.000Z",
        "allocation": 30
    }, {
        "_id": "5c80c5ef0c253823fc443339",
        "start": "2018-12-31T18:30:00.000Z",
        "end": "2019-09-30T18:30:00.000Z",
        "allocation": 100
    }, {
        "_id": "5c80c60b0c253823fc44333a",
        "start": "2018-12-31T18:30:00.000Z",
        "end": "2020-10-07T18:30:00.000Z",
        "allocation": 25
    }]
}, {
    "_id": "5c80c1940c253823fc44332b",
    "status": "active",
    "location": "Chennai",
    "contact_number": "1234567890",
    "work": [{
        "_id": "5c80c65e0c253823fc44333b",
        "start": "2019-01-01T18:30:00.000Z",
        "end": "2019-10-04T18:30:00.000Z",
        "allocation": 50
    }]
}, {
    "_id": "5c80c26e0c253823fc44332e",
    "status": "active",
    "location": "Chennai",
    "contact_number": "1234567890",
    "work": [{
        "_id": "5c80c7240c253823fc44333f",
        "start": "2018-12-31T18:30:00.000Z",
        "end": "2019-10-09T18:30:00.000Z",
        "allocation": 25
    }]
}]

私は部分的にlodashとvanillajsを使用してそれを行いましたが、完全に正常に機能します。しかし、読みやすさは完全に悪いです。私はこれをlodashだけを使って達成したいと思っています。何か助けはありますか?

let ids: any = groupBy(this.project.work, function (res) {
    return res.employee._id;
});

for (let id in ids) {
    let tmp = [];
    let employee_added = false;
    ids[id].map((work) => {
        if (!employee_added) {
            tmp = work.employee;
            tmp['work'] = [];
            employee_added = true;
        }
        delete work.employee;
        tmp['work'].push(work);
    })

    this.employees.push(tmp);
}

console.log(this.employees);
jo_va

プレーンJavaScriptを使用して簡潔に行うことができObject.values()Array.reduce()割り当てを説明します。

const data = {"work":[{"_id":"5c80c5c00c253823fc443337","start":"2019-01-01T18:30:00.000Z","end":"2019-01-02T18:30:00.000Z","employee":{"_id":"5c80c16e0c253823fc44332a","status":"active","location":"Chennai","contact_number":"1234567890"},"allocation":30},{"_id":"5c80c5ef0c253823fc443339","start":"2018-12-31T18:30:00.000Z","end":"2019-09-30T18:30:00.000Z","employee":{"_id":"5c80c16e0c253823fc44332a","status":"active","location":"Chennai","contact_number":"1234567890"},"allocation":100},{"_id":"5c80c60b0c253823fc44333a","start":"2018-12-31T18:30:00.000Z","end":"2020-10-07T18:30:00.000Z","employee":{"_id":"5c80c16e0c253823fc44332a","status":"active","location":"Chennai","contact_number":"1234567890"},"allocation":25},{"_id":"5c80c65e0c253823fc44333b","start":"2019-01-01T18:30:00.000Z","end":"2019-10-04T18:30:00.000Z","employee":{"_id":"5c80c1940c253823fc44332b","status":"active","location":"Chennai","contact_number":"1234567890"},"allocation":50},{"_id":"5c80c7240c253823fc44333f","start":"2018-12-31T18:30:00.000Z","end":"2019-10-09T18:30:00.000Z","employee":{"_id":"5c80c26e0c253823fc44332e","status":"active","location":"Chennai","contact_number":"1234567890"},"allocation":25}]};

const result = Object.values(data.work.reduce((acc, work) => {
  const { employee: { _id, ...rest }, ...job } = work;
  const jobs = (acc[_id] || {}).work || [];
  acc[_id] = { _id, ...rest, work: [...jobs, job] };
  return acc;
}, {}));

console.log(result);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Lodashを使用してネストされたプロパティを検索およびフィルタリングする方法は?

分類Dev

lodashを使用してマルチネストされたJSON記事をグループ化する方法は?

分類Dev

Linq C#を使用してグループ化されたプロパティをループで取得する

分類Dev

「パスタプル」を使用してネストされたプロパティから型を取得する方法

分類Dev

ネストされた配列の各アイテムをlodashでグループ化する方法

分類Dev

グループ化/ネストされたプロパティを作成するにはどうすればよいですか?

分類Dev

Lodashでネストされたプロパティを省略します

分類Dev

LINQを使用して、別のプロパティでグループ化されたリストから最大値を除くすべてを削除します

分類Dev

JSDOCでネストされたプロパティを読みやすい方法で文書化する方法は?

分類Dev

Vaadin 7グリッドにフィルタリングを使用してネストされた複雑なプロパティを追加する方法

分類Dev

ネストされたプロパティフィールドは、Reformgemを使用して表示されません

分類Dev

ngforテーブルをネストする方法。ネストされたプロパティは1つしか表示できません

分類Dev

VanillaJSまたはLodashを使用してネストされたオブジェクトプロパティをオプションのチェーン/チェックを実装する方法

分類Dev

LINQでICollectionのネストされたプロパティでグループ化するにはどうすればよいですか?

分類Dev

Jacksonアノテーションを使用して、ネストされた値をプロパティにマップする方法は?

分類Dev

Lodashはpluckでネストされたオブジェクトプロパティを取得します

分類Dev

ネストされたオブジェクトを動的キーでグループ化する(Lodashを使用)

分類Dev

C#のリストからHashSetとDictionaryを取得し、ネストされたプロパティでグループ化します

分類Dev

greenplumで、パーティション化されたテーブルがネストされたループ結合を使用するのに対し、パーティション化されていないテーブルはハッシュ結合を使用する理由

分類Dev

EntityEntry.Referenceを使用してネストされたナビゲーションプロパティをロードすることは可能ですか?

分類Dev

ネストされたjsonを異なるプロパティ名で逆シリアル化します

分類Dev

Jinja2テンプレートを使用してネストされたグループを追加する方法

分類Dev

Lodashを使用してネストされた配列をフィルタリングする方法は?

分類Dev

計算されたプロパティを使用して配列をフィルタリングする方法は?

分類Dev

プレインストールされたグラフィック パッケージのみを使用して、ネットワーク仮想化プロットのエッジ幅を増やすにはどうすればよいですか?

分類Dev

コレクションをネストされたコレクションプロパティの要素でグループ化されたグアバマルチマップに変換するにはどうすればよいですか?

分類Dev

AzureCLIを使用してネストされたプロパティを取得する方法

分類Dev

digメソッドを使用してネストされたプロパティを取得する方法

分類Dev

FastMemberを使用してネストされたプロパティ値を設定する方法

Related 関連記事

  1. 1

    Lodashを使用してネストされたプロパティを検索およびフィルタリングする方法は?

  2. 2

    lodashを使用してマルチネストされたJSON記事をグループ化する方法は?

  3. 3

    Linq C#を使用してグループ化されたプロパティをループで取得する

  4. 4

    「パスタプル」を使用してネストされたプロパティから型を取得する方法

  5. 5

    ネストされた配列の各アイテムをlodashでグループ化する方法

  6. 6

    グループ化/ネストされたプロパティを作成するにはどうすればよいですか?

  7. 7

    Lodashでネストされたプロパティを省略します

  8. 8

    LINQを使用して、別のプロパティでグループ化されたリストから最大値を除くすべてを削除します

  9. 9

    JSDOCでネストされたプロパティを読みやすい方法で文書化する方法は?

  10. 10

    Vaadin 7グリッドにフィルタリングを使用してネストされた複雑なプロパティを追加する方法

  11. 11

    ネストされたプロパティフィールドは、Reformgemを使用して表示されません

  12. 12

    ngforテーブルをネストする方法。ネストされたプロパティは1つしか表示できません

  13. 13

    VanillaJSまたはLodashを使用してネストされたオブジェクトプロパティをオプションのチェーン/チェックを実装する方法

  14. 14

    LINQでICollectionのネストされたプロパティでグループ化するにはどうすればよいですか?

  15. 15

    Jacksonアノテーションを使用して、ネストされた値をプロパティにマップする方法は?

  16. 16

    Lodashはpluckでネストされたオブジェクトプロパティを取得します

  17. 17

    ネストされたオブジェクトを動的キーでグループ化する(Lodashを使用)

  18. 18

    C#のリストからHashSetとDictionaryを取得し、ネストされたプロパティでグループ化します

  19. 19

    greenplumで、パーティション化されたテーブルがネストされたループ結合を使用するのに対し、パーティション化されていないテーブルはハッシュ結合を使用する理由

  20. 20

    EntityEntry.Referenceを使用してネストされたナビゲーションプロパティをロードすることは可能ですか?

  21. 21

    ネストされたjsonを異なるプロパティ名で逆シリアル化します

  22. 22

    Jinja2テンプレートを使用してネストされたグループを追加する方法

  23. 23

    Lodashを使用してネストされた配列をフィルタリングする方法は?

  24. 24

    計算されたプロパティを使用して配列をフィルタリングする方法は?

  25. 25

    プレインストールされたグラフィック パッケージのみを使用して、ネットワーク仮想化プロットのエッジ幅を増やすにはどうすればよいですか?

  26. 26

    コレクションをネストされたコレクションプロパティの要素でグループ化されたグアバマルチマップに変換するにはどうすればよいですか?

  27. 27

    AzureCLIを使用してネストされたプロパティを取得する方法

  28. 28

    digメソッドを使用してネストされたプロパティを取得する方法

  29. 29

    FastMemberを使用してネストされたプロパティ値を設定する方法

ホットタグ

アーカイブ