File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -444,43 +444,24 @@ class Store {
444444 * @param searchText
445445 */
446446 searchNode = ( data , searchText ) => {
447- const cloneData = [ ...data ] ;
448- if ( ! searchText ) {
449- return cloneData ;
450- }
451-
452- const search = ( node ) => {
453- return node . filter ( ( item ) => {
454- // 当前节点匹配
455- if ( item . name . indexOf ( searchText ) !== - 1 ) {
456- if (
457- item . children &&
458- Array . isArray ( item . children ) &&
459- item . children . length
460- ) {
461- const children = search ( item . children ) ;
462- if ( children . length ) {
463- Object . assign ( item , { children, isUnfold : true } ) ;
464- } else {
465- Object . assign ( item , { isUnfold : false } ) ;
466- }
467- }
447+ const regx = RegExp ( searchText ) ;
448+ return data ?. filter ( node => {
449+ if ( regx . test ( node ?. name ) ) {
450+ node . isUnfold = true ;
451+ return node ;
452+ } else if ( node ?. children ?. length ) {
453+ const filteredChildren = this . searchNode ( node . children , searchText ) ;
454+ if ( filteredChildren ?. length ) {
455+ node . children = filteredChildren ;
456+ node . isUnfold = true ;
468457 return true ;
469458 }
470-
471- // 当前节点未匹配: 对子项进行匹配
472- if ( Array . isArray ( item . children ) && item . children . length ) {
473- Object . assign ( item , {
474- children : search ( item . children ) ,
475- isUnfold : true ,
476- } ) ;
477- return item . children . length > 0 ;
478- }
479459 return false ;
480- } ) ;
481- } ;
482- return search ( cloneData ) ;
483- } ;
460+ } else {
461+ return false ;
462+ }
463+ } ) ;
464+ }
484465}
485466
486467export default Store ;
You can’t perform that action at this time.
0 commit comments