Проще - используйте возможности массивов более полно:
const getTruthyKeys = obj =>
Object
.entries(obj)
.filter(n => n[1])
.map(n => n[0]);
Чистой - заведите себе привычку объявлять все используемые переменные. Сейчас ваша функция гадит в глобальную (или какую-то другую внешнюю, если там есть переменные с такими же именами) область видимости (не в строгом режиме и при отсутствии таких переменных во внешних областях видимости конечно, в этом случае ваш код просто упадёт с ошибкой), вот здесь:
for([key, value] of Object.entries(item)) {
UPD. А вообще, если подумать, то такая функция чистой быть не может. Уж точно не в js.
Потому что в js можно сделать так:
const obj = new Proxy({
a: 0,
b: 1,
c: 2,
}, {
get: () => Math.round(Math.random()),
});
Ну и соответственно, результаты будут случаться для такого объекта самые разные:
console.log(Array.from({ length: 10 }, () => getTruthyKeys(obj)));