У меня есть объект:
{
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" },
// ...
]
Вы можете обращаться с ключами объекта как с набором и вычислять его силовой набор, используя алгоритм, подобный описанному в этот вопрос:
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'}));
не могли бы вы показать нам, что вы пробовали.