mirror of
https://github.com/public-transport/db-vendo-client.git
synced 2025-02-23 07:09:35 +02:00
chore: improved performance
This commit is contained in:
parent
e9699f98ba
commit
8c6a8d858e
1 changed files with 6 additions and 9 deletions
|
@ -1,8 +1,6 @@
|
|||
'use strict'
|
||||
|
||||
const scanner = require('object-scan')
|
||||
const toPath = require('lodash/toPath')
|
||||
const get = require('lodash/get')
|
||||
|
||||
// For all items in `tree` matching a path selector specified
|
||||
// in `selector`, call `onResult` with the item, its parent and
|
||||
|
@ -11,13 +9,12 @@ const get = require('lodash/get')
|
|||
// tree: {foo: [{bar: 1}], hey: {there: [{bar: 2}]}}
|
||||
// selector: **[*].bar
|
||||
const findInTree = (tree, selector, onResult) => {
|
||||
const scan = scanner([selector])
|
||||
for (const pathStr of scan(tree)) {
|
||||
const path = toPath(pathStr)
|
||||
const val = get(tree, path)
|
||||
const parent = get(tree, path.slice(0, -1), {})
|
||||
onResult(val, parent, path)
|
||||
scanner([selector], {
|
||||
joined: false,
|
||||
filterFn: (key, value, { parents }) => {
|
||||
onResult(value, parents[0], key);
|
||||
}
|
||||
})(tree);
|
||||
}
|
||||
|
||||
module.exports = findInTree
|
||||
|
|
Loading…
Add table
Reference in a new issue