Как сравнить с вложенным массивом и обновить значение в JavaScript? - PullRequest
0 голосов
/ 28 января 2019

Я хочу сравнить ниже inputArr с arrObj1. В массиве ниже у меня есть questionId и optionId, по этим ключам я хочу найти и обновить значение в массиве arrObj1, и мне нужно нажать клавишу «isSelected: true» вarrObj1, массив имеет два типа, один из которых является вложенным, а другой - нормальным, в arrObj1 первый массив является вложенным, а второй будет нормальным, у меня BOLD isSelected ключ, т.е. там, где мне нужно нажать клавишу.

    var inputArr = {
    "questionInfo": [

        {
        "questionId": "400003",
        "quesOptions": [
            {
            "optionId": "400004",
            "status": 1
            },
            {
                "optionId":"400032",
                "status":1
            }
        ]
        },
        {
        "questionId": "300001",
        "quesOptions": [
            {
            "optionId": "300014",
            "status": 1
            }
        ]
        }
    ]
    }


    var arrObj1 = {
    "questionOptions": [
        {
        "questionId": "300001",
        "options": [
            {
            "optionId": "300037"
            },
            {
            "optionId": "300014"
            }
        ],
        "isDisplayable": true
        },
        {
        "questionId": "300004",
        "options": [
            {
            "optionId": "400035",
            "questionOptions": [
                {
                "questionId": "400005",
                "options": [
                    {
                    "optionId": "400001",
                    "questionOptions": [
                        {
                        "questionId": "400003",
                        "options": [
                            {
                            "optionId": "400004",
                            "isDisplayable": true
                            },
                            {
                            "optionId": "400032"
                            },
                            {
                            "optionId": "400026"
                            },
                            {
                            "optionId": "400027",
                            }
                        ]
                        }
                    ]
                    }
                ],
                "optionsHistory": [
                    {
                    "optionId": "400002"
                    }
                ]
                }
            ]
            }
        ]
        },
        {
        "questionId": "300005",
        "options": [
            {
            "optionId": "300026"
            },
            {
            "optionId": "300034"
            },
            {
            "optionId": "300006"
            },
            {
            "optionId": "300017"
            }
        ]
        }
    ]
    }

Ниже приведен мой ожидаемый результат

    {
    "questionOptions": [
        {
        "questionId": "300001",
        "options": [
            {
            "optionId": "300037"
            },
            {
            "optionId": "300014",
            **"isSelected":true**
            }
        ],
        **"isSelected":true,**
        "isDisplayable": true
        },
        {
        "questionId": "300004",
        **"isSelected":true,**
        "options": [
            {
            "optionId": "400035",
            **"isSelected":true,**
            "questionOptions": [
                {
                "questionId": "400005",
                **"isSelected":true,**
                "options": [
                    {
                    "optionId": "400001",
                    **"isSelected":true,**
                    "questionOptions": [
                        {
                        "questionId": "400003",
                        **"isSelected":true,**
                        "options": [
                            {
                            "optionId": "400004",
                            **"isSelected":true,**
                            "isDisplayable": true
                            },
                            {
                            "optionId": "400032",
                            **"isSelected":true**
                            },
                            {
                            "optionId": "400026"
                            },
                            {
                            "optionId": "400027"
                            }
                        ]
                        }
                    ]
                    }
                ],
                "optionsHistory": [
                    {
                    "optionId": "400002"
                    }
                ]
                }
            ]
            }
        ]
        },
        {
        "questionId": "300005",
        "options": [
            {
            "optionId": "300026"
            },
            {
            "optionId": "300034"
            },
            {
            "optionId": "300006"
            },
            {
            "optionId": "300017"
            }
        ]
        }
    ]
    }

Я попробовал следующее

    for(var i =0;i<myObj.questionOptions.lenght;i++){
        for(var j=0;j<myObj.questionOptions.options.lenght;j++){
            if(arr[i].optionId === myObj.questionOptions.optionId){
                myObj.questionOptions.options.isSelected = true;
            }
            else{

            }
        }
    }   

Кто-нибудь дает мне решение для этого.

...