Ответ с reduce
, конечно, работает и эффективен.Вы также можете использовать filter()
+ map
.Это имеет недостаток, заключающийся в просмотре значений дважды, но имеет преимущество в удобочитаемости.Что более важно, конечно, зависит от вашего варианта использования.Я бы предпочел следующее, если нет так много данных, что дополнительная работа заметна:
const mapKey = { 'hello': 3, 'test':4, 'test2': 5};
let preferences = { hello: true, test:false, test2:true}
let filtered = Object.entries(preferences)
.filter(([k, visible]) => visible)
.map(([k, visible]) => ({ index: mapKey[k], visible }))
console.log(filtered)