ts-npm-ytmusic-api/src/tests/traverse/mine.ts

33 lines
674 B
TypeScript

const traverse = (data: any, keys: string[], single: boolean = false) => {
const again = (data: any, key: string): any => {
let res = []
if (data instanceof Object && key in data) {
res.push(data[key])
}
if (data instanceof Array) {
res.push(...data.map(v => again(v, key)).flat())
} else if (data instanceof Object) {
res.push(
...Object.keys(data)
.map(k => again(data[k], key))
.flat()
)
}
return res.length === 1 ? res[0] : res
}
let value = data
for (const key of keys) {
value = again(value, key)
}
return value
}
traverse(require("./data.json")[0], ["playNavigationEndpoint", "videoId"], true)
export default {}