Vue el-table树形数据搜索
filterTree(tree, filterText) {
const result = [];
tree.forEach(node => {
if (node.label.toLowerCase().includes(filterText)) {
const newNode = { ...node };
const children = node.children ? this.filterTree(node.children, filterText) : [];
if (children.length) {
newNode.children = children;
}
result.push(newNode);
} else if (node.children) {
const children = this.filterTree(node.children, filterText);
if (children.length) {
result.push({
...node,
children
});
}
}
}
js数组递归遍历返回过滤后数组
function filterArray(arr, callback) {
let result = [];
arr.forEach((item, index, array) => {
if (Array.isArray(item)) {
// 如果当前元素是数组,递归调用filterArray
const filtered = filterArray(item, callback);
// 将递归过滤后的数组合并到result中
result = result.concat(filtered);
} else {
// 如果当前元素不是数组,执行回调函数进行过滤
if (callback(item, index, array)) {
result.push(item);
}
}
});
return result;
}
// 使用示例
const arr = [1, [2, 3, [4, 5], 6], 7, 8];
const result = filterArray(arr, (item) => item > 3);
console.log('result = ', result); // 输出: [4, 5, 6, 7, 8]
function filterArray(arr, callback) {
let result = [];
arr.forEach((item) => {
if (Array.isArray(item)) {
// 如果当前元素是数组,递归调用filterArray
const filtered = filterArray(item, callback);
// 将递归过滤后的数组合并到result中
result = result.concat(filtered);
} else {
// 如果当前元素不是数组,执行回调函数进行过滤
if (callback(item)) {
result.push(item);
}
}
});
return result;
}
// 使用示例
const arr = [1, [2, 3, [4, 5], 6], 7, 8];
const result = filterArray(arr, (item) => item > 3);
console.log('result = ', result); // 输出: [4, 5, 6, 7, 8]
VM1022:22 result = (5) [4, 5, 6, 7, 8]