уменьшить вложенный словарь глубины 2 - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть структура данных:

 {"nodes": [
        {
            "NLPTag": {
                "value": "Pope",
                "pos": "PROPN",
                "index": 2,
                "uuid": "26acad7d-799b-4de2-9bfa-f0330aee4d79",
                "id": 816753
            }, .... ]}

, в которой есть список словарей. Ключ этого словаря имеет тип. Мой желаемый вывод:

 {"nodes": [
        {"type":"NLPTag",
         "value": "Pope",
         "pos": "PROPN",
         "index": 2,
         "uuid": 816753
            }, .... ]}

, чтобы сделать это, я попытался:

data.nodes.map(function(node) {

        const type = Object.keys(node)[0];

        node[type]["type"] = type; 
        node[type]["id"] = node[type]["uuid"];
        delete node[type]["uuid"];

        return node[type] 

    }) 

, но это приводит к структуре данных с похожим вложением в примере один. Словарь на глубине 2 изменился, но я не удалил вложение:

data = {"nodes":[
          {"NLPTag": {
                "type":"NLPTag",
                "id":"26acad7d-799b-4de2-9bfa-f0330aee4d79"...
                     }
           },....]}

Может кто-нибудь помочь мне сказать, где я иду не так?

1 Ответ

0 голосов
/ 28 февраля 2020

Вы можете использовать деструктуризацию объекта:

const result = {nodes: data.nodes.map(item => ({...Object.values(item)[0] }))}

Демо:

const data = {
    "nodes": [
        {
            "NLPTag": {
                "value": "Pope",
                "pos": "PROPN",
                "index": 2,
                "uuid": "26acad7d-799b-4de2-9bfa-f0330aee4d79",
                "id": 816753
            }, 
        },
        {
            "foo": {
                "value": "foo",
                "pos": "foo",
                "index": 2,
                "uuid": "foo",
                "id": 45654
            }, 
        }
    ]
}


const result = {nodes: data.nodes.map(item => ({...Object.values(item)[0] }))}

console.log(result);

// {
//     "nodes": [
//         {
//             "value": "Pope",
//             "pos": "PROPN",
//             "index": 2,
//             "uuid": "26acad7d-799b-4de2-9bfa-f0330aee4d79",
//             "id": 816753
//         },
//         {
//             "value": "foo",
//             "pos": "foo",
//             "index": 2,
//             "uuid": "foo",
//             "id": 45654
//         }
//     ]
// }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...