Код Senior Jest и Vitest обновлено
Реализовать toMatchObject
Условие
Напишите matchObject(actual, expected), возвращающую true или false по правилам:
- если
expectedмассив:actualтоже массив той же длины, элементы совпадают попарно по этим же правилам; - если
expectedобъект (не null, не массив):actualобъект (не null, не массив), и для каждого ключаexpectedключ есть вactualи значения совпадают рекурсивно; лишние ключиactualне мешают; - иначе сравнение через
Object.is.
Примеры
matchObject({"id":1,"name":"A","extra":true}, {"id":1}) // true
matchObject({"id":1}, {"id":2}) // false
matchObject({"user":{"id":1,"role":"admin"}}, {"user":{"role":"admin"}}) // true
Как подойти
Подсказки: 2
- Три ветки: массив, объект, примитив.
- Проверяйте null отдельно: typeof null тоже object.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.