Как объединить массив объектов разных ключей в один ключ из одного массива - PullRequest
0 голосов
/ 07 мая 2018

Я работаю в Node JS. У меня есть один массив объектов JSON. В одном объекте JSON есть разные ключи, такие как A, B, C, D, E. Я должен объединить массив объектов из разных ключей в один ключ. Я предоставляю свой объект JSON следующим образом.

{
    "out-for-delivery": [
        {
            "order_id": 1,
            "address": {
                "user_id": 1,
                "first_name": "Mark",
                "last_name": "Stevauh",
                "landmark": "Krti",
                "mobile": "123456789",
                "type": "work",
                "city_id": 4644,
                "postcode": 0,
                "address_type": "address",
                "locker_id": 0,
                "added_on": "2018-04-30T12:34:11.000Z",
                "updated_on": "2018-04-30T12:34:11.000Z",
                "address_1": "Gm is",
                "address_2": "Bc"
            },
            "status": "out-for-delivery"
        },
        {
            "order_id": 7,
            "address": {
                "user_id": 5,
                "first_name": "",
                "last_name": "",
                "landmark": "",
                "mobile": "123456789",
                "type": "other",
                "city_id": 34,
                "postcode": 0,
                "address_type": "locker",
                "locker_id": 2,
                "added_on": "2018-05-02T09:32:38.000Z",
                "updated_on": "2018-05-02T09:32:38.000Z",
                "address_1": "jhdasd ahdkjh asd",
                "address_2": "asfjksfdj asakjsf"
            },
            "status": "out-for-delivery"
        },
        {
            "order_id": 6,
            "address": {
                "user_id": 5,
                "first_name": "Shruti",
                "last_name": "Shinde",
                "landmark": "test",
                "mobile": "123456789",
                "type": "work",
                "city_id": 45,
                "postcode": 0,
                "address_type": "address",
                "locker_id": 0,
                "added_on": "2018-05-02T09:35:25.000Z",
                "updated_on": "2018-05-02T09:35:25.000Z",
                "address_1": "test",
                "address_2": "test"
            },
            "status": "out-for-delivery"
        }
    ],
    "retry-delivery": [
        {
            "order_id": 13,
            "address": null,
            "status": "retry-delivery"
        },
        {
            "order_id": 8,
            "address": {
                "user_id": 5,
                "first_name": "TEST",
                "last_name": "Shinde",
                "landmark": "test",
                "mobile": "9773071307",
                "type": "work",
                "city_id": 666,
                "postcode": 0,
                "address_type": "address",
                "locker_id": 0,
                "added_on": "2018-05-02T09:35:25.000Z",
                "updated_on": "2018-05-02T09:35:25.000Z",
                "address_1": "test",
                "address_2": "TEST"
            },
            "status": "retry-delivery"
        }
    ],
    "complete": [
        {
            "order_id": 2,
            "address": null,
            "status": "complete"
        }
    ],
    "cancelled": [
        {
            "order_id": 15,
            "address": null,
            "status": "cancelled"
        }
    ]
}

Я хочу объединить массив объектов из ключей B, C в ключ D. Так как мне этого добиться? Заранее спасибо. Очень жаль, что я немного изменил свой вопрос. Я только изменил свои ключи, которые ранее были A, B, C, D.

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Вы можете получить значения с помощью Object.values и сопоставить их с набором результатов.

var data = { A: [{ order_id: 1, address: { user_id: 1, first_name: "Mark", last_name: "Stevauh", landmark: "Krti", mobile: "123456789", type: "work", city_id: 4644, postcode: 0, address_type: "address", locker_id: 0, added_on: "2018-04-30T12:34:11.000Z", updated_on: "2018-04-30T12:34:11.000Z", address_1: "Gm is", address_2: "Bc" }, status: "A" }, { order_id: 7, address: { user_id: 5, first_name: "", last_name: "", landmark: "", mobile: "123456789", type: "other", city_id: 34, postcode: 0, address_type: "locker", locker_id: 2, added_on: "2018-05-02T09:32:38.000Z", updated_on: "2018-05-02T09:32:38.000Z", address_1: "jhdasd ahdkjh asd", address_2: "asfjksfdj asakjsf" }, status: "A" }, { order_id: 6, address: { user_id: 5, first_name: "Shruti", last_name: "Shinde", landmark: "test", mobile: "123456789", type: "work", city_id: 45, postcode: 0, address_type: "address", locker_id: 0, added_on: "2018-05-02T09:35:25.000Z", updated_on: "2018-05-02T09:35:25.000Z", address_1: "test", address_2: "test" }, status: "A" }], B: [{ order_id: 13, address: null, status: "B" }, { order_id: 8, address: { user_id: 5, first_name: "TEST", last_name: "Shinde", landmark: "test", mobile: "9773071307", type: "work", city_id: 666, postcode: 0, address_type: "address", locker_id: 0, added_on: "2018-05-02T09:35:25.000Z", updated_on: "2018-05-02T09:35:25.000Z", address_1: "test", address_2: "TEST" }, status: "B" }], C: [{ order_id: 2, address: null, status: "C" }], D: [{ order_id: 15, address: null, status: "D" }] },
    array = Object.values(data).reduce((r, a) => r.concat(a), []);

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 07 мая 2018

Вы можете использовать Object.values(), чтобы получить все значения вашего объекта, а с помощью spread syntax и array#concat вы можете получить массив.

const data = { A: [{ order_id: 1, address: { user_id: 1, first_name: "Mark", last_name: "Stevauh", landmark: "Krti", mobile: "123456789", type: "work", city_id: 4644, postcode: 0, address_type: "address", locker_id: 0, added_on: "2018-04-30T12:34:11.000Z", updated_on: "2018-04-30T12:34:11.000Z", address_1: "Gm is", address_2: "Bc" }, status: "A" }, { order_id: 7, address: { user_id: 5, first_name: "", last_name: "", landmark: "", mobile: "123456789", type: "other", city_id: 34, postcode: 0, address_type: "locker", locker_id: 2, added_on: "2018-05-02T09:32:38.000Z", updated_on: "2018-05-02T09:32:38.000Z", address_1: "jhdasd ahdkjh asd", address_2: "asfjksfdj asakjsf" }, status: "A" }, { order_id: 6, address: { user_id: 5, first_name: "Shruti", last_name: "Shinde", landmark: "test", mobile: "123456789", type: "work", city_id: 45, postcode: 0, address_type: "address", locker_id: 0, added_on: "2018-05-02T09:35:25.000Z", updated_on: "2018-05-02T09:35:25.000Z", address_1: "test", address_2: "test" }, status: "A" }], B: [{ order_id: 13, address: null, status: "B" }, { order_id: 8, address: { user_id: 5, first_name: "TEST", last_name: "Shinde", landmark: "test", mobile: "9773071307", type: "work", city_id: 666, postcode: 0, address_type: "address", locker_id: 0, added_on: "2018-05-02T09:35:25.000Z", updated_on: "2018-05-02T09:35:25.000Z", address_1: "test", address_2: "TEST" }, status: "B" }], C: [{ order_id: 2, address: null, status: "C" }], D: [{ order_id: 15, address: null, status: "D" }] },
    result = [].concat(...Object.values(data));
console.log(result);
0 голосов
/ 07 мая 2018

Просто используйте синтаксис спрэда:

const obj = {
  "A": [{
      "order_id": 1,
      "address": {
        "user_id": 1,
        "first_name": "Mark",
        "last_name": "Stevauh",
        "landmark": "Krti",
        "mobile": "123456789",
        "type": "work",
        "city_id": 4644,
        "postcode": 0,
        "address_type": "address",
        "locker_id": 0,
        "added_on": "2018-04-30T12:34:11.000Z",
        "updated_on": "2018-04-30T12:34:11.000Z",
        "address_1": "Gm is",
        "address_2": "Bc"
      },
      "status": "A"
    },
    {
      "order_id": 7,
      "address": {
        "user_id": 5,
        "first_name": "",
        "last_name": "",
        "landmark": "",
        "mobile": "123456789",
        "type": "other",
        "city_id": 34,
        "postcode": 0,
        "address_type": "locker",
        "locker_id": 2,
        "added_on": "2018-05-02T09:32:38.000Z",
        "updated_on": "2018-05-02T09:32:38.000Z",
        "address_1": "jhdasd ahdkjh asd",
        "address_2": "asfjksfdj asakjsf"
      },
      "status": "A"
    },
    {
      "order_id": 6,
      "address": {
        "user_id": 5,
        "first_name": "Shruti",
        "last_name": "Shinde",
        "landmark": "test",
        "mobile": "123456789",
        "type": "work",
        "city_id": 45,
        "postcode": 0,
        "address_type": "address",
        "locker_id": 0,
        "added_on": "2018-05-02T09:35:25.000Z",
        "updated_on": "2018-05-02T09:35:25.000Z",
        "address_1": "test",
        "address_2": "test"
      },
      "status": "A"
    }
  ],
  "B": [{
      "order_id": 13,
      "address": null,
      "status": "B"
    },
    {
      "order_id": 8,
      "address": {
        "user_id": 5,
        "first_name": "TEST",
        "last_name": "Shinde",
        "landmark": "test",
        "mobile": "9773071307",
        "type": "work",
        "city_id": 666,
        "postcode": 0,
        "address_type": "address",
        "locker_id": 0,
        "added_on": "2018-05-02T09:35:25.000Z",
        "updated_on": "2018-05-02T09:35:25.000Z",
        "address_1": "test",
        "address_2": "TEST"
      },
      "status": "B"
    }
  ],
  "C": [{
    "order_id": 2,
    "address": null,
    "status": "C"
  }],
  "D": [{
    "order_id": 15,
    "address": null,
    "status": "D"
  }]
};
obj.D = [...obj.B, ...obj.C, ...obj.D];
console.log(obj.D);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...