Как преобразовать объект в массив на основе ключа / значения?

У меня есть объект с несколькими свойствами true / false, мне нужно вернуть массив только с именем свойства с true.

Я пробовал Object.entries, но не знаю, как сейчас создать массив.

const inputs = {
  a: true,
  b: true,
  c: false
}


// result should be ['a','b']

// i have tried so far this one with no success
// const result = Object.entries(inputs).map((x, idx) => console.info(x))

Попробуйте Object.keys(inputs).filter(key => inputs[key]);

Nenad Vracar 08.08.2018 17:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
38
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий
Object.keys(inputs).filter(key => inputs[key])

Используйте мой JSFiddle для кода.

Используйте метод массива фильтров, описанный MDN как

creates a new array with all elements that pass the test implemented by the provided function

Вызовите его в Object.keys, встроенном массиве для объектов:

returns an array of a given object's property names

Источник: Object.keys ()

Итак, чтобы собрать все вместе, это будет выглядеть так:

const inputs = {
 a: true,
 b: true,
 c: false
}
console.info(inputs); // Output: {a: true, b: true, c: false}

const arr = Object.keys(inputs).filter(keyName => inputs[keyName]);
console.info(arr); // Output: ["a", "b"]

Для предоставления только ключей объекта используйте filter:

Нравится:

const inputs = {
  a: true,
  b: true,
  c: false
};

var true_inputs = Object.keys(inputs).filter(key => inputs[key]);
console.info(true_inputs);

Или JQuery map:

const inputs = {
  a: true,
  b: true,
  c: false
};


var true_inputs = $.map(inputs, function(n, i) { if (n) return i });
console.info(true_inputs);
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

Чтобы получить весь объект, используйте for .. in: Нравится:

const inputs = {
  a: true,
  b: true,
  c: false
};


var true_inputs = {};

for(var key in inputs){
	if (inputs[key])
	  true_inputs[key]=inputs[key];
}

console.info(inputs);
console.info(true_inputs);

Другие вопросы по теме