gpt4 book ai didi

Javascript创建未知维度大小的数组

转载 作者:行者123 更新时间:2023-12-03 06:23:54 25 4
gpt4 key购买 nike

虽然我已经编写 Javascript 几年了,并且至少认为我了解它的大部分功能和问题,但今天我遇到了一个新问题。

我有一个设备数组,每个设备都包含一个路径属性。在这个路径属性中也是一个数组。

[
{ // Device object
path: [1]
name: "Device 1",...
},
{ // Device object
path: [1,3]
name: "Device 13",...
},
{ // Device object
path: [1,3,1]
name: "Device 131",...
}...
]

这个路径属性代表我必须创建的数组中的路径。所以上面的结构应该产生以下结果(我知道它不是有效的 JS):

[
1 => {
name: "Device 1",
children: [
3 => {
name: "Device 13",
children: [
1 => {
name: "Device 131",
children: [],...
},
],...
},
],...
},
]

任何其他语言,例如在 main.php 中,我将使用引用或指针,然后循环遍历路径数组:

$newArr = [];
$ptr = &$newArr;
foreach($path as $key){
$ptr = &$ptr[$key].children;
}

我能想到在 JS 中做这样的事情的唯一方法是使用 eval。但也许您有一些更好的想法。

澄清我想要的:第一个结构应该以某种方式处理并“转换为第二个结构”。第三个也是最后一个代码片段是我在 PHP 中使用的方法。

谢谢

卢卡

最佳答案

让我们试试这个(未经测试):

var tree = new Object();

for(var key in yourFlatArray){
var path = yourFlatArray[key].path;
var node = tree;
while(path.length){
if(!(path[0] in node)){
node[path[0]] = new Object();
node[path[0]]['children'] = new Array();
node[path[0]]['name'] = yourFlatArray[key].name;
}
node = node[path[0]].children;
path.shift();
}
}

关于Javascript创建未知维度大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38739492/

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