mirror of
https://github.com/richard-loafle/fuse-angular.git
synced 2025-01-11 04:55:07 +00:00
83 lines
1.8 KiB
TypeScript
83 lines
1.8 KiB
TypeScript
|
export class FuseUtils
|
||
|
{
|
||
|
|
||
|
public static filterArrayByString(mainArr, searchText)
|
||
|
{
|
||
|
searchText = searchText.toLowerCase();
|
||
|
|
||
|
return mainArr.filter(itemObj => {
|
||
|
return this.searchInObj(itemObj, searchText);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
public static searchInObj(itemObj, searchText)
|
||
|
{
|
||
|
|
||
|
for ( const prop in itemObj )
|
||
|
{
|
||
|
if ( !itemObj.hasOwnProperty(prop) )
|
||
|
{
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
const value = itemObj[prop];
|
||
|
|
||
|
if ( typeof value === 'string' )
|
||
|
{
|
||
|
if ( this.searchInSting(value, searchText) )
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if ( Array.isArray(value) )
|
||
|
{
|
||
|
if ( this.searchInArray(value, searchText) )
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
if ( typeof value === 'object' )
|
||
|
{
|
||
|
if ( this.searchInObj(value, searchText) )
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static searchInArray(arr, searchText)
|
||
|
{
|
||
|
for ( const value of arr )
|
||
|
{
|
||
|
if ( typeof value === 'string' )
|
||
|
{
|
||
|
if ( this.searchInSting(value, searchText) )
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( typeof value === 'object' )
|
||
|
{
|
||
|
if ( this.searchInObj(value, searchText) )
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static searchInSting(value, searchText)
|
||
|
{
|
||
|
if ( value.toLowerCase().includes(searchText) )
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
}
|