amos-tool
Version:
amos ui tool
28 lines (24 loc) • 753 B
JavaScript
;
var _utils = require("./utils");
function arrayFilter(r, e) {
var i = (e = e || {}).key || "", a = e.value || "", t = e.childrenKey || "children", n = [];
return function r(e) {
e.forEach(function(e) {
var l = e[t];
l && _utils.isArray(l) ? r(l) : e[i].indexOf(a) > -1 && n.push(e);
});
}(r || []), n;
}
function arrayTreeFilter(r, e, i) {
(i = i || {}).childrenKeyName = i.childrenKeyName || "children";
var a = r || [], t = [], n = 0;
do {
var l = a.filter(function(r) {
return e(r, n);
})[0];
if (!l) break;
t.push(l), a = l[i.childrenKeyName] || [], n += 1;
} while (a.length > 0);
return t;
}
module.exports = arrayFilter, module.exports.arrayTreeFilter = arrayTreeFilter;