我有一个随机的json数组键值,其值是这样的数组:
json = {foo:[1,2],bar:[3,4],pi:[5]}
如何为任意数量的键生成这些参数的每个组合,以便返回如下列表:
{foo:1,bar,3,pi:5}
{foo:1,bar:4,pi:5}
{foo:2,bar:3,pi:5}
{foo:2,bar:4,pi:5}
答案 0 :(得分:7)
使用reduce和每次迭代,生成新的排列:
const json = {foo:[1,2],bar:[3,4],pi:[5, 7], test: [1]};
const results = Object.keys(json).reduce((acc, key) => {
const newArray = [];
json[key].forEach(item => {
if (!acc || !acc.length) { // First iteration
newArray.push({[key]: item});
} else {
acc.forEach(obj => {
newArray.push({...obj, [key]: item});
});
}
});
return newArray;
}, []);
console.log(results);