36 lines
836 B
TypeScript
36 lines
836 B
TypeScript
const traverse = (data: any, keys: string, single = false) => {
|
|
const again = (data: any, key: string): any => {
|
|
var res = []
|
|
|
|
data.hasOwnProperty(key) && res.push(data[key])
|
|
if (single && data.hasOwnProperty(key)) {
|
|
return res.shift()
|
|
}
|
|
|
|
if (data instanceof Array) {
|
|
for (let i = 0; i < data.length; i++) {
|
|
res = res.concat(again(data[i], key))
|
|
}
|
|
} else if (data instanceof Object) {
|
|
const c = Object.keys(data)
|
|
if (c.length > 0) {
|
|
for (let i = 0; i < c.length; i++) {
|
|
res = res.concat(again(data[c[i]], key))
|
|
}
|
|
}
|
|
}
|
|
return res.length == 1 ? res.shift() : res
|
|
}
|
|
|
|
let z = keys.split(":"),
|
|
value = data
|
|
for (let i = 0; i < z.length; i++) {
|
|
value = again(value, z[i])
|
|
}
|
|
console.log(value)
|
|
}
|
|
|
|
traverse(require("./data.json"), "playNavigationEndpoint:videoId")
|
|
|
|
export default {}
|