Как я могу получить массив всех возможных комбинаций ключа/значения объекта

У меня есть объект:

{
a: 1,
b: "2",
c: "3",
// ...
}

Я хочу получить массив со всеми возможными комбинациями, как объекты, каждой пары ключ/значение следующим образом:

[
  { a: 1 },
  { b: "2" },
  { c: "3" },
  { a: 1, b: "2", c: "3" },
  { a: 1, b: "2" },
  { a: 1, c: "3" },
  { b: "2", c: "3" },
  // ...
]

не могли бы вы показать нам, что вы пробовали.

Mauricio Gracia Gutierrez 18.05.2022 03:07
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
2
2
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете обращаться с ключами объекта как с набором и вычислять его силовой набор, используя алгоритм, подобный описанному в этот вопрос:

const fn = (o) => {
  const result = [];
  const keys = Object.keys(o);

  for (let i = 0; i < Math.pow(2, keys.length); i++) {
    let current = {};
    
    for (let j = 0; j < keys.length; j++) {
      if ((i & (1 << j)) > 0) {
        current[keys[j]] = o[keys[j]];
      }
    }
    
    result.push(current);
  }
  
  return result;
}

console.log(fn({a: 1, b: '2', c: '3'}));

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