javascript 如何通过只筛选必要的数据来创建新数组?

wbrvyc0a  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(166)

我有一个对象,其中包含不同类型的问题multiplesingletext

const data = {
    questions: [
        {
            "question": "Question 1",
            "value": [
                "value_1.1.1",
                "value_1.1.2"
            ],
            "type": "multiple",
            "options": [
                {
                    "value": "value_1.1.1",
                    "label": "Value 1.1.1"
                },
                {
                    "value": "value_1.1.2",
                    "label": "Value 1.1.2"
                },
                {
                    "textValue":"test12",
                    "value":"value_1.1.3",
                    "label":"Value 1.1.3",
                }
            ]
        },
        {
            "question": "Question 2",
            "value": "value_2.1.1",
            "type": "single",
            "options": [
                {
                    "value": "value_2.1.1",
                    "label": "Value 2.1.1"
                },
                {
                    "value": "value_2.1.2",
                    "label": "Value 2.1.2"
                },
            ]
        },
        {
            "question":"Question 3",
            "textValue":"Test 12345",
            "type":"text"
        }
    ]
}

我想用对象创建一个新的数组,其中包含问题键和值键。
值键必须包含所选选项的标签。对于多重类型,值可以包含多个标签。所选选项可以从父值键中检索,如果它等于选项的值,我希望使用此选项的标签作为值。
在某些情况下,一个选项还包含一个textValue(参见1.1.3),那么这也必须被添加到值中。
因此,对于上面的示例,新数组应如下所示:

const newData = [
    {
        question: "Question 1",
        value: ['Value 1.1.1', 'Value 1.1.2', 'Additional text value']
    },
    {
        question: "Question 2",
        value: ['Value 2.1.1']
    },
    {
        question: "Question 3",
        value: ['Test 12345']
    }
];
pgpifvop

pgpifvop1#

基本上是循环问题,按自己的类型处理每个问题。棘手的部分是type: multiple,但它是可管理的。
第一个

相关问题