gpt4 book ai didi

Javascript - 将嵌套数组转换为数组对象

转载 作者:行者123 更新时间:2023-11-30 07:50:58 27 4
gpt4 key购买 nike

我有一个形状未知的嵌套数组。这是一个例子:

["head","val1","val2","val3",
["head2","val4","val5",
["head3","val6","val7",
["head4", "val8"],"val9"]],
["head5", "val10", "val11"]
]

数组的长度都为 2 或更大。一个数组可以包含任意数量的其他数组,这些数组也可以包含任意数量的数组。所有值都是字符串或数组。

我正在尝试将其转换为具有以下形状的单个对象:

{"head": ["val1","val2","val3", 
{"head2": ["val4","val5",
{"head3": ["val6","val7",
{"head4": ["val8"]}, "val9"]},
{"head5": ["val10", "val11"]}
]}

基本上,每个数组都需要转换为一个对象,其中第一个值是键,数组的其余部分是值。我试过使用 reduce 但不太正确。

最佳答案

在这种情况下,您不知道嵌套数组的深度,因此设计递归函数是个好主意。

在递归函数的基本情况下,输入不是数组,因此只需返回输入即可。

在输入是数组的情况下,创建一个具有单个属性的 JS 对象,其名称等于输入数组中的第一个元素,其值等于数组的其余部分......你需要针对每个剩余成员递归调用您的函数,以在结果数组中获取它们的值。

var a = ["head","val1","val2","val3",
["head2","val4","val5",
["head3","val6","val7",
["head4", "val8"],"val9"]],
["head5", "val10", "val11"]
];

function convert(val) {
var result;
if (Array.isArray(val)) {
var key = val[0];
var vals = val.slice(1);
result = {};
result[key] = [];
for (var i = 0; i < vals.length; i++) {
result[key].push(convert(vals[i]));
}
} else {
result = val;
}
return result;
}

console.log(convert(a));

关于Javascript - 将嵌套数组转换为数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53199593/

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