Может неправильно написал вопрос, но задача такая:
Нужно вычислить преступника по уже известным данным.
Ваша задача состоит в том, чтобы создать функцию getKiller. getKiller принимает в себя
2 параметра:
1. suspectInfo. Это объект, в котором ключи - это подозреваемые в преступлении
люди, а значения - массивы людей, которых видели подозреваемые в день
убийства
2. deadPeople. Это массив с именами людей, которых убил преступник
Преступником является тот, кто видел всех убитых людей в день убийства. Функция
getKiller должна возвращать имя преступника.
Примеры результатов функции getKiller:
function getKiller(suspectInfo, deadPeople) {
let killerName = '';
Object.entries(suspectInfo).forEach((data) => {
const suspectPerson = data[0];
const peopleWereSeen = data[1];
const isKiller = deadPeople.every((deadName) => peopleWereSeen.includes(deadName));
if (isKiller) {
killerName = suspectPerson;
}
})
return killerName;
}
getKiller(
{
'James': ['Jacob', 'Bill', 'Lucas'],
'Johnny': ['David', 'Kyle', 'Lucas'],
'Peter': ['Lucy', 'Kyle'],
},
['Lucas', 'Bill'])
Не могу полностью понять, как работает функция getKiller. Передаем в getKiller одним параметром объект, другим массив. Создаем пустую переменную, куда в конце запишется результат - имя преступника.
Далее при помощи Object.entries возвращаем 3 массива, где пара ключ-значение объекта это отдельный массив с 2-мя значениями.
А как дальше работает forEach? В (data) подставляются по очереди все вновь созданные 3 массива ?При каждой итерации создаются переменные suspectPerson и peopleWereSeen.
Далее создается константа isKiller, в котором мне не полностью понятная строка
deadPeople.every((deadName) => peopleWereSeen.includes(deadName))
Я так понимаю every берет значения из переданного в deadPeople массива и потом ищет в переменной peopleWereSeen это значение, возвращая тру или фолс.
Далее условие что если isKiller тру, то записывает в пустую переменную suspectPerson.
Тяжело все сформулировать, в общем я запутался в казалось бы не сложном коде. Помогите пожалуйста