gpt4 book ai didi

JavaScript - 从字典键生成组合并动态保留键名

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:38:18 25 4
gpt4 key购买 nike

我在此处找到了生成多个数组 的所有组合的优秀代码:JavaScript - Generating combinations from n arrays with m elements

我现在希望更进一步,我想生成包含 arrays 的多个 JSON 对象的所有组合

例如,如果我在一个数组中有两个对象,如下所示:

[{"Footprint_Shape":["L-Shape","H-Shape","T-Shape"]},
{"Num_of_Floors":[1,2]}]

我想在保留键的同时生成下面的数组,它是每个组合:

    [{"Footprint_Shape": "L-Shape", "Num_of_Floors":1 },
{ "Footprint_Shape": "H-Shape", "Num_of_Floors":1 },
{ "Footprint_Shape": "T-Shape", "Num_of_Floors":1 },
{ "Footprint_Shape": "L-Shape", "Num_of_Floors":2 },
{ "Footprint_Shape": "H-Shape", "Num_of_Floors":2 },
{ "Footprint_Shape": "T-Shape", "Num_of_Floors":2 }]

请记住,我需要动态生成所有键和值。

任何能为我指明编写此代码的正确方向的指针或代码示例将不胜感激

最佳答案

您可以将对象数组转换为多维数组。构建可能的组合并使用 map 构建最终格式。

var arr = [{"Footprint_Shape": ["L-Shape", "H-Shape", "T-Shape"]}, {"Num_of_Floors": [1, 2]}];

var result = arr.map(o => Object.values(o)[0]) //Convert the array of objects into multi dimensional array.
.reduce((c, v) => [].concat(...c.map(o => v.map(x => [].concat(o, x))))) //Make all possible combinations
.map(([a, b]) => ({"Footprint_Shape": a,"Num_of_Floors": b})) //Construct the final format

console.log(result);

更新:

var arr = [{"Footprint_Shape": ["L-Shape", "H-Shape", "T-Shape"]}, {"Num_of_Floors": [1, 2]}];

var keys = arr.map(o => Object.keys(o)[0]); //Get the list of keys
var result = arr.map(o => Object.values(o)[0]) //Convert the array of objects into multi dimensional array.
.reduce((c, v) => [].concat(...c.map(o => v.map(x => [].concat(o, x))))) //Make all possible combinations
.map(o => o.reduce((c, v, i) => Object.assign(c, {[keys[i]]: v}), {})); //Construct the final format

console.log(result);

关于JavaScript - 从字典键生成组合并动态保留键名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50939817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com