Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript替换n元树对象中的属性名_Javascript - Fatal编程技术网

javascript替换n元树对象中的属性名

javascript替换n元树对象中的属性名,javascript,Javascript,Supose我有一个n元树结构(json格式),如下所示: [ { “文本”:“一些标题”, “儿童”:[ { “文本”:“一些标题”, “儿童”:[ ... ] }, ... ] } ] 我既不知道节点将有多少子节点,也不知道树的深度 我想做的是在所有子级中将属性的名称text更改为name 我尝试过使用递归函数func: func(树){ 如果(!tree)返回; for(树的let节点){ node.name=node.text 删除node.text; 返回函数(节点子节点); }

Supose我有一个n元树结构(json格式),如下所示:

[
{
“文本”:“一些标题”,
“儿童”:[
{
“文本”:“一些标题”,
“儿童”:[
...
]
},
...  
]
}
]
我既不知道节点将有多少子节点,也不知道树的深度

我想做的是在所有子级中将属性的名称
text
更改为
name

我尝试过使用递归函数
func

func(树){
如果(!tree)返回;
for(树的let节点){
node.name=node.text
删除node.text;
返回函数(节点子节点);
}
}

但它不起作用。我该怎么做呢?

我想说,您的代码的主要问题是,
节点
变量保存相应数组项的值,并且它不保留对这些项本身的引用,因此,基本上,您尝试进行的变异永远不会应用于原始数组(但仅限于在每次循环迭代时重新分配的临时变量)

如果您更喜欢对原始数组进行变异,并愿意为此使用
for(
-loop),那么最好使用
for(…in
-loop)通过其键访问数组项:

const src=[
{
文字:“一些标题”,
儿童:[
{
文字:“一些标题”,
儿童:[]
},
]
}
],
func=树=>{
for(树中的常量nodeIdx){
const{text:name,children}=tree[nodeIdx]
func(儿童)
树[nodeIdx]={name,children}
}
}
func(src)
console.log(src)

。作为控制台包装{min height:100%;}
您将在此处使用in运算符

for (let node **in** tree) {
  node.name = node.text
  delete node.text;

    
  return func(node.children);
}

这不是json。json是一种文本格式。这里有一个JavaScript对象literal.um,实际的函数是什么?似乎缺少了部分。抱歉,刚刚更新。