0
我的道路就像低于我的树结构:在长字符串与另一个词替换词在嵌套数组
Node : /myPath/Node
Node-1 : /myPath/Node/Node-1
Node-1-1 : /myPath/Node/Node-1-1
现在,如果从节点我目前的目标记录,然后从该节点我想每行进孩子它的节点并用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");
}
好upvoted你对帮助样的努力我,但如果suppos e我在递归方法中有2个参数,那么如何使用循环调用递归方法? –
我已经采取了一个名为searchTerm的变量,我已将该值赋予该变量,因此我将searchTerm作为参数传递给递归函数,而不是在replaceAll函数中对其进行硬编码,但问题是在递归调用第二次时它会丢失 –
我已经更新了答案,以显示如何添加额外参数。 – ikkuh