//递归树,
function findNode(id, data) {
for (let i = 0; i < data.length; i++) {
if (data[i].nodeId == id) {
return data[i]
} else if (data[i].children !== null && data[i].children !== undefined && data[i].children.length !== 0) {
let val = findNode(id, data[i].children)
if (val != undefined) {
return val;
}
}
}
}
function filterByName(menu, name) {
var menuNew = [];
for (var i = 0; i < menu.length; i++) {
var nodeNew = undefined;
var node = menu[i];
var childrenNode = node.children;
var childrenMenu = [];
if (childrenNode) {
if (childrenNode.length > 0) {
childrenMenu = filterByName(childrenNode, name);
}
}
if (childrenMenu) {
if (childrenMenu.length > 0) {
nodeNew = new Object();
nodeNew = nodeFillNewFromOld(node, nodeNew);
nodeNew.children = childrenMenu;
} else {
if (checkNodeEquals(node, name)) {
nodeNew = new Object();
nodeNew = nodeFillNewFromOld(node, nodeNew);
}
}
}
if (nodeNew) {
menuNew.push(nodeNew);
}
}
console.log(menuNew);
return menuNew;
}
function checkNodeEquals(node, name) {
if (node.nodeName.indexOf(name) != -1) {
return true;
} else {
return false;
}}
function nodeFillNewFromOld(oldNode, newNode) {
newNode.nodeId = oldNode.nodeId;
// newNode.code = oldNode.code;
newNode.nodeName = oldNode.nodeName;
newNode.nodeInfo = oldNode.nodeInfo;
newNode.notLeaf = oldNode.notLeaf;
newNode.pnodeId = oldNode.pnodeId;
// newNode.checked = oldNode.checked;
// newNode.attributes = oldNode.attributes;
newNode.children = undefined;
return newNode;
}
高亮文本
text= highLightKeywords(text,keywords)即可
//高亮关键字 text =>内容 words:关键词 tag 被包裹的标签
//匹配每一个关键字字符
function highLightKeywords(text, words) {
var i, len = words.length, re;
for (i = 0; i < len; i++) {
// 正则匹配所有的文本
re = new RegExp(words[i], 'g');
if (re.test(text)) {
text = text.replace(re, `<span class="highlight">$&</span>`);
}
}
return text;
}
别人的方法
https://www.cnblogs.com/JerryD/p/11535589.html