2020-02-22 11:13:56 -08:00
|
|
|
'use strict';
|
2019-09-02 16:56:26 +02:00
|
|
|
|
2020-02-22 11:13:56 -08:00
|
|
|
const objectScan = require('object-scan');
|
2019-09-02 16:56:26 +02:00
|
|
|
|
2020-02-22 11:13:56 -08:00
|
|
|
const findInTree = (haystack, needles) => {
|
|
|
|
const result = Object.create(null);
|
|
|
|
needles.forEach((needle) => {
|
|
|
|
result[needle] = [];
|
|
|
|
});
|
|
|
|
objectScan(needles, {
|
|
|
|
filterFn: (key, value, { parents, matchedBy }) => {
|
|
|
|
matchedBy.forEach((needle) => {
|
|
|
|
result[needle].push([value, parents]);
|
|
|
|
});
|
2020-01-26 09:21:21 -08:00
|
|
|
}
|
2020-02-22 11:13:56 -08:00
|
|
|
})(haystack);
|
|
|
|
return result;
|
|
|
|
};
|
2019-09-02 16:56:26 +02:00
|
|
|
|
2020-02-22 11:13:56 -08:00
|
|
|
module.exports = findInTree;
|