return 具有过滤子数组的父对象

return parent object with filtered child array

示例数据:

{
    "QuestionId": 2,
    "QuestionName": "Question2",
    "QuestionTypeId": 2,
    "QuestionTypeName": "CheckBoxList",
    "Choices": [{
            "ChoiceId": 7,
            "ChoiceName": "Choice1",
            "Answer": "7"
        },
        {
            "ChoiceId": 8,
            "ChoiceName": "Choice2",
            "Answer": ""
        },
        {
            "ChoiceId": 9,
            "ChoiceName": "Choice3",
            "Answer": ""
        },
        {
            "ChoiceId": 10,
            "ChoiceName": "Choice4",
            "Answer": "10"
        }
    ]
}

根据示例数据,如何通过使用下划线或任何更好的 javascript 方法保持相同结构的过滤选项返回? Choice 是根据 Choice.Answer 过滤的。答案必须有值。

如果您想过滤掉答案为空的选项,请使用 Array.filter - 我还假设您的上述数据结构在一个数组(一组问题)中

//Loop over each question
for (var i = 0; i < questions.length; i++) {
    //For each question, filter the "Choices" array to not include empty Answers
    questions[i].Choices = questions[i].Choices.filter(function(choice) {
        return choice.Answer != ""
    })
}