Работа с reduce

Начал изучать как работает reduce, но столкнулся с одной проблемой и не могу понять как её решить. Хочу написать функцию, которая принимает объект, как аргумент и возвращает новый массив с именами ключей - значение, которых false. Например:

Input : { isActive: false, isPilot: true };

Output : ['isActive']

Написал вот такой вот код:

function test(obj) {
  return Object.entries(obj)
   .reduce((acc, [key, value]) => { 
     if (value === false)  acc = [key]
  return acc;
}, []);
}

Но моя функция, показывает только последний ключ с false, подскажите правильное направление для решения.


Ответы (2 шт):

Автор решения: Danil Apsadikov

let obj = {
  isActive: false,
  isPilot: true
};


function test(obj) {
  return Object.entries(obj)
    .reduce((acc, [key, value]) => {
      if (value === false) acc.push(key);
      return acc;
    }, []);
}

console.log(test(obj));

→ Ссылка
Автор решения: Grundy

acc - это массив. Для добавления элемента в массив можно использовать метод .push

var o = {
  isActive: false,
  isPilot: true
};

function test(obj) {
  return Object.entries(obj)
    .reduce((acc, [key, value]) => {
      if (value === false) acc.push(key);
      return acc;
    }, []);
}

console.log(test(o));

→ Ссылка