按嵌套数组中的值查找和删除数组中的对象

Find and remove object in array by value in nested array

本文关键字:数组 删除 对象 查找 嵌套      更新时间:2023-09-26

我有一个具有以下结构的数组:

var questions = [
    {"answerswer":
        ["A1", "A2", "A3"]
    },
    {"answerswer":
        ["B1"]
    },
    {"answerswer":
        ["C1", "C2"]
    }
]

我还有一个对象数组,如下所示:

var answers = [
    {"value": "A1"},
    {"value": "A512"},
    {"value": ""},
    {}
];

对于answers中的每个对象(如果不是{}),我想查找相应的值是否出现在questions中的某个对象中。如果是这样,我想更新一个counter变量并从questions中删除该对象。我如何实现这一点?

像这样尝试

var questions = [{
    "answerswer": ["A1", "A2", "A3"]
}, {
    "answerswer": ["B1"]
}, {
    "answerswer": ["C1", "C2"]
}];
var count = 0;
answers.forEach(function(ans) {
    var flag = isExists(ans.value);
    flag && count++;
});
console.log(count);
function isExists(value) {
   return questions.some(function(ques) {
        var ind = ques.answer.indexOf(value);
        if (ind > -1) {
            ques.answer.splice(ind, 1);
            return true;
        }
    });
}