fix
This commit is contained in:
parent
883fbdc4c9
commit
0e6b333fcf
|
|
@ -0,0 +1,75 @@
|
||||||
|
export function scanObj(obj, handler) {
|
||||||
|
for (const key in obj) {
|
||||||
|
if (
|
||||||
|
typeof obj[key] === 'object' &&
|
||||||
|
obj[key] !== null &&
|
||||||
|
!Array.isArray(obj[key])
|
||||||
|
) {
|
||||||
|
scanObj(obj[key], handler)
|
||||||
|
} else {
|
||||||
|
handler(obj, key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function filterObj(obj, fn, clone = true) {
|
||||||
|
if (clone) {
|
||||||
|
obj = JSON.parse(JSON.stringify(obj))
|
||||||
|
}
|
||||||
|
scanObj(obj, (currentObj, key) => {
|
||||||
|
if (!fn(currentObj[key])) {
|
||||||
|
delete currentObj[key]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return obj
|
||||||
|
}
|
||||||
|
|
||||||
|
export function resetObj(obj, fn, clone = false) {
|
||||||
|
if (clone) {
|
||||||
|
obj = JSON.parse(JSON.stringify(obj))
|
||||||
|
}
|
||||||
|
scanObj(obj, (currentObj, key) => {
|
||||||
|
const readyValue = (() => {
|
||||||
|
if (Array.isArray(currentObj[key])) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
return undefined
|
||||||
|
})()
|
||||||
|
currentObj[key] = fn ? fn(currentObj, key, readyValue) : readyValue
|
||||||
|
})
|
||||||
|
return obj
|
||||||
|
}
|
||||||
|
|
||||||
|
export function scanObjArr(
|
||||||
|
objArr,
|
||||||
|
handler,
|
||||||
|
options = { children: 'children' },
|
||||||
|
parent
|
||||||
|
) {
|
||||||
|
for (const obj of objArr) {
|
||||||
|
handler(obj, objArr, parent)
|
||||||
|
if (Array.isArray(obj[options.children])) {
|
||||||
|
scanObjArr(obj[options.children], handler, options, obj, parent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function deepFindObjArr(
|
||||||
|
objArr,
|
||||||
|
handler,
|
||||||
|
options = { children: 'children' }
|
||||||
|
) {
|
||||||
|
let result
|
||||||
|
let lock = false
|
||||||
|
scanObjArr(
|
||||||
|
objArr,
|
||||||
|
(obj, objArr) => {
|
||||||
|
if (!lock && handler(obj, objArr)) {
|
||||||
|
lock = true
|
||||||
|
result = obj
|
||||||
|
}
|
||||||
|
},
|
||||||
|
options
|
||||||
|
)
|
||||||
|
return result
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue