Пройтись по массивам и вывести в один массив результат...(обработка результата теста)
Доброе утро. Помогите пожалуйста решить задачку. Есть опрос, после его прохождения в массив answers попадают его результаты:
const answers = ["1a", "2a", "3b", "4a", "5b", "6a", "7b", "8a", "9b", "10a", "11b", "12a", "13a", "14b", "15a", "16b", "17a", "18b", "19a", "20b"];
Необходимо пройти по 5 массивам в котором ответы к этому опросу:
const arr1 = ["1a", "3b", "6a", "10a", "11a", "13b", "16a", "20a"];
const arr2 = ["1b", "4a", "7b", "9a", "11b", "14a", "17b", "19a"];
const arr3 = ["2b", "5a", "9b", "10b", "12b","15a", "19b", "20b"];
const arr4 = ["3a", "5b", "7a", "8b", "13a", "15b", "17a", "18b"];
const arr5 = ["2a", "4b", "6b", "8a", "12a", "14b", "16b", "18a"];
И вывести один массив если значения в массиве answers совпадают со значениями ответов к опросу:
const result = [
{ id: 1, count: 4 },
{ id: 2, count: 4 },
{ id: 3, count: 3 },
{ id: 4, count: 4 },
{ id: 5, count: 5 },
];
т.е. если первый элемент массива answers (1b), есть в одном из массивов, в данном случае arr2, то увеличивает счётчик count в массиве result где id: 2 на + 1 и тд...
Ответы (1 шт):
Автор решения: Stepan Kasyanenko
→ Ссылка
Вот один из способов.
const answers = ["1a", "2a", "3b", "4a", "5b", "6a", "7b", "8a", "9b", "10a", "11b", "12a", "13a", "14b", "15a", "16b", "17a", "18b", "19a", "20b"];
const checks = [{
id: 1,
answers: ["1a", "3b", "6a", "10a", "11a", "13b", "16a", "20a"]
}, {
id: 2,
answers: ["1b", "4a", "7b", "9a", "11b", "14a", "17b", "19a"]
}, {
id: 3,
answers: ["2b", "5a", "9b", "10b", "12b", "15a", "19b", "20b"]
}, {
id: 4,
answers: ["3a", "5b", "7a", "8b", "13a", "15b", "17a", "18b"]
}, {
id: 5,
answers: ["2a", "4b", "6b", "8a", "12a", "14b", "16b", "18a"]
}];
const result = checks.map(m => ({
id: m.id,
count: m.answers.filter(f => answers.indexOf(f) !== -1).length
}));
console.log(result);