javascript - 销毁对象的嵌套数组 javascript

标签 javascript arrays ecmascript-6 javascript-objects destructuring

Answers 是一个对象数组,我需要进行过滤以实现所需的输出。

const answers = [
    {   

        "surveyVersion": "5",
        "id": "550259bd-2164-4f5b-b477-49cd2afc5829",
        "surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
        "surveyName": "Compass",
        "createdAt": 1585244952251,
        "survey": [
            {
                "data": {
                    "statement": "De 0 a 10, qual a chance de você RECOMENDAR o Compass?",
                    "answer": {
                        "label": "7",
                        "value": "7"
                    }
                }
            },
            {
                "data": {
                    "statement": "De 0 a 10, qual a nota voce dar para a qualidade do atendimento?",
                    "answer": {
                        "label": "7",
                        "value": "6"
                    }
                }
            },
            {
                "data": {
                    "statement": "De 0 a 10, qual a nota voce da para o interior o Compass?",
                    "answer": {
                        "label": "7",
                        "value": "8"
                    }
                }
            }
        ]

    },
    {   

        "surveyVersion": "5",
        "id": "c720e777-5085-4493-bed9-c70bc311f47d",
        "surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
        "surveyName": "Compass",
        "createdAt": 1585244952251,
        "survey": [
            {
                "data": {
                    "statement": "De 0 a 10, qual a chance de você RECOMENDAR o Compass?",
                    "answer": {
                        "label": "7",
                        "value": "3"
                    }
                }
            },
            {
                "data": {
                    "statement": "De 0 a 10, qual a nota voce dar para a qualidade do atendimento?",
                    "answer": {
                        "label": "7",
                        "value": "4"
                    }
                }
            },
            {
                "data": {
                    "statement": "De 0 a 10, qual a nota voce da para o interior o Compass?",
                    "answer": {
                        "label": "7",
                        "value": "5"
                    }
                }
            }
        ]

    }
]

我必须为调查属性数组内的每个数据对象创建一个Key[data.statement]:Value[data.answer.value]

期望的输出:

[
   {   

       "surveyVersion": "5",
       "id": "550259bd-2164-4f5b-b477-49cd2afc5829",
       "surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
       "surveyName": "Compass",
       "createdAt": 1585244952251,
       "De 0 a 10, qual a chance de você RECOMENDAR o Compass?":"7" ,
       "De 0 a 10, qual a nota voce dar para a qualidade do atendimento?":"6",
       "De 0 a 10, qual a nota voce da para o interior o Compass?":"8"


   },
   {   

       "surveyVersion": "5",
       "id": "c720e777-5085-4493-bed9-c70bc311f47d",
       "surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
       "surveyName": "Compass",
       "createdAt": 1585244952251,
        "De 0 a 10, qual a chance de você RECOMENDAR o Compass?":"3" ,
        "De 0 a 10, qual a nota voce dar para a qualidade do atendimento?":"4",
        "De 0 a 10, qual a nota voce da para o interior o Compass?":"5"

   }
]



我尝试了两种方法,一种使用 map :

 let values = answers.map(item => ({
        ...item,
        id: item.id,
        survey: item.surveyName,
        answer: item.survey.map(function(node) {
          return {
            [node.data.statement]: node.data.answer.value
          };
        })
      }));

输出:

[{
        "surveyName": "Compass",
        "createdAt": 1585244952251,
        "survey": "Compass",
        "surveyVersion": "5",
        "id": "550259bd-2164-4f5b-b477-49cd2afc5829",
        "surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
        "answer": [{
                "De 0 a 10, qual a chance de você RECOMENDAR o Compass?": "7"
            },
            {
                "De 0 a 10, qual a nota voce dar para a qualidade do atendimento?": "8"
            },
            {
                "De 0 a 10, qual a nota voce da para o interior o Compass?": "6"
            }
        ]

    },

    {
        "surveyName": "Compass",
        "createdAt": 1585244949217,
        "survey": "Compass",
        "surveyVersion": "4",
        "id": "5156be07-2dc4-47f6-b7c4-1fc5089db0b6",
        "surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
        "answer": [{
                "De 0 a 10, qual a chance de você RECOMENDAR o Compass?": "3"
            },
            {
                "De 0 a 10, qual a nota voce dar para a qualidade do atendimento?": "4"
            },
            {
                "De 0 a 10, qual a nota voce da para o interior o Compass?": "5"
            }
        ]

    }


]

另一种使用解构的方法,这是一个令人惊奇的方法,但我不知道如何在调查数组内部循环。

for (const {id:id,surveyName:surveyName,surveyVersion:surveyVersion,surveyId:surveyId,createdAt:createdAt,survey:[{data:{statement,answer:{value}}}]} of answers)
  output = {id,surveyName,surveyVersion,surveyId,createdAt,statement:value}

输出:

{
         "id": "e233582b-06b7-4257-98a8-8e669a8a341d",
         "surveyName": "Compass",
         "surveyVersion": "1",
         "surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
         "createdAt": 158524492683,
         "statement": "De 0 a 10, qual a chance de você RECOMENDAR o Compass?",
         "value": "7"
     }

感谢任何帮助

最佳答案

如果你愿意的话,你可以非常明确地表达出来。这很有效,非常容易阅读和理解,并且不需要很多行代码。

let values = [];

for (let ans of answers) {
    let item = {};
    item["surveyVersion"] =  ans["surveyVersion"]
    item["id"] = ans["surveyVersion"]
    item["surveyId"] = ans["surveyVersion"]
    item["surveyName"] = ans["surveyVersion"]
    item["createdAt"] = ans["surveyVersion"]
    for(let resp of ans.survey) {
        item[resp.data.statement] = resp.data.answer.value;
    }
    values.push(item);
}

关于javascript - 销毁对象的嵌套数组 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60908251/

相关文章:

javascript - 如何拥有 Class.SubClass.SomeMethod 结构?

javascript - JS Set.has() 方法是否进行浅层检查?

javascript - 当输入字段已预填充时,该字段无效

javascript - 使用javascript获取当前的SVG笔划值

php - 将值添加到 MySQL 结果数组

java - 列出目录中丢失的文件并删除任何多余的文件

javascript - 从 JavaScript 更新属性并删除数组中的重复元素

javascript - 什么是 minimongo (Meteor) 限制? cursor.toArray() 客户端失败

javascript - 为什么jquery中不能递归调用函数?

javascript - 从数组 javascript 创建新对象