А здесь при выполнении вообще не требуется проверка. Вижу, в других решениях такое применяется, но это излишнее, или, как любят говорить "масло масляное". Конструкция for ... in уже берет именно перечисляемые свойства объекта. Проверять их на собственность нет смысла. Оговорочка: на каждой итерации можно изменить исходный объект, так что в каких-то местах такое может понадобиться, но точно не в этом случае.

Поправочка: При удалении свойств объекта for in даже не будет это свойство перечислять. Пример:
const a = {name: "DSfsD", age: 16, legs: 2} for (const i in a) { console.log({...a}, i, a.hasOwnProperty(i) === true); delete a.age; } console.log('a', a); // {name: 'DSfsD', age: 16, legs: 2} 'name' true // {name: 'DSfsD', legs: 2} 'legs' true // a {name: 'DSfsD', legs: 2}
То есть, как мы видим, age даже не попало в перечисление.