gpt4 book ai didi

javascript - 将单词替换为嵌套数组中长字符串中的另一个单词

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

我的树结构中的路径如下所示:

Node                : /myPath/Node 
Node-1 : /myPath/Node/Node-1
Node-1-1 : /myPath/Node/Node-1-1

现在,如果我当前的对象记录来自 Node,那么我想从该节点遍历它的每个子节点,并将 Node 替换为 First。

预期输出为:

Node                : /myPath/First
Node-1 : /myPath/First/Node-1
Node-1-1 : /myPath/First/Node-1-1

我当前的代码问题是它仅替换第一个节点处的搜索词(第一个),而不是每个子节点。

var currentObj = 
{
"name": "Node",
"nodes": [
{
"name": "Node-1",
"nodes": [
{
"name": "Node-1-1",
"nodes": [
{
"name": "Node-1-1-1",
"nodes": [

],
"path": "/myPath/Node/Node-1/Node-1-1/Node-1-1-1"
}
],
"path": "/myPath/Node/Node-1/Node-1-1"
}
],
"path": "/myPath/Node/Node-1"
}
],
"path": "/myPath/Node"
};

recursive(currentObj,"First");
console.log(currentObj);

function recursive(node,replace)
{
console.log(node.path);
node.path = replaceAll(node.path,'Node',replace);
}

function replaceAll(str, find, replace) {
return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
}

function escapeRegExp(str) {
return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
}

最佳答案

nodes中的每个节点递归调用recursive似乎有效:

function recursive(node)
{
node.path = replaceAll(node.path,'Node','First');
node.nodes.forEach(recursive);
}

带有额外参数:

node.nodes.forEach(function(child_node) {
recursive(child_node, arg1, arg2);
});

关于javascript - 将单词替换为嵌套数组中长字符串中的另一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44631130/

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