gpt4 book ai didi

javascript - 我想将递归函数的结果附加到对象的子节点

转载 作者:行者123 更新时间:2023-11-30 11:01:23 26 4
gpt4 key购买 nike

基本上,我正在尝试将数组转换为 file-tree module 的特定数据格式在 react 。问题是递归函数将“[Object]”附加到子节点而不是它返回的实际对象,即({name: fileName})。

const transformData = function (path, arr = []) {

if(path.length === 1){
var fileName = path.pop(0)
console.log(fileName + ' is a File')
arr.push(
{name: `${fileName}`}
)
console.log('File : ', arr)
return arr


}else{
var name = path.splice(0,1).pop()
console.log(name, path)
arr.push({
name: `${name}`,
//the child node below returns '[Object]'
childNode: transformData(path)

})

console.log('Folder : ', arr)
return arr
}

}



var path = ['Template', 'temp','temp2', 'file.txt']
var tree = transformData(path)
console.log('data : ', tree )

如果您运行上面的代码片段,它会产生以下输出

Template [ 'temp', 'temp2', 'file.txt' ]
temp [ 'temp2', 'file.txt' ]
temp2 [ 'file.txt' ]
file.txt is a File
File : [ { name: 'file.txt' } ]
Folder : [ { name: 'temp2', childNode: [ [Object] ] } ]
Folder : [ { name: 'temp', childNode: [ [Object] ] } ]
Folder : [ { name: 'Template', childNode: [ [Object] ] } ]
//Final result
data : [ { name: 'Template', childNode: [ [Object] ] } ]
*******************************
Expected Output
*******************************
data : [ { name: 'Template', childNode: [ { name: 'temp',childNode [{name: 'temp2', childNode: [{ name: 'file.txt' } ] }

最佳答案

NodeJS 控制台非常有限,它不提供与显示的数据进行交互的方式,而只是显示您作为字符串记录的数据的人为版本。如果您要记录一个具有数千个属性的非常大的对象,控制台会溢出,并且会记录比您实际需要的信息多得多的信息。这就是为什么控制台只显示特定级别的嵌套对象,然后它只显示 [Object] 以指示它更深。

控制台不适合调试,我强烈推荐使用 Chrome Inspector with NodeJS ,在那里您可以将对象展开到任何深度(以及其他非常有用的东西)。

关于javascript - 我想将递归函数的结果附加到对象的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57575489/

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