多维数组的查询。
首先不想把数组拍平了,找到对应的key之后再根据id、parentId等之类的字段去重新组装。
/**
* @param this.searchStr 查询条件
* @param arr 树形Data
* @param key 指定关键字,对应的是查询条件
* @returns [] 过滤的数组输出的结果
*/
formatData (arr, key) {
let newArr = []
arr.forEach((item) => {
// 判断条件,包含大小写转换,便于查找英文
if (item[key].toUpperCase().indexOf(this.searchStr.toUpperCase()) > -1) {
newArr.push(item)
} else {
if (item.children && item.children.length > 0) {
let redata = this.formatData(item.children, key)
if (redata && redata.length > 0) {
let obj = {
...item,
children: redata,
}
newArr.push(obj)
}
}
}
})
return newArr
}