bbo
Version:
bbo is a utility library of zero dependencies for javascript.
41 lines (36 loc) • 956 B
JavaScript
;
var is_object = require('./is_object.js');
require('./get_tag.js');
require('./is_array.js');
var is_function = require('./is_function.js');
var for_each = require('./for_each.js');
var is = require('./is.js');
require('./is_date.js');
var is_shallow_equal = require('./is_shallow_equal.js');
function find(src, func) {
// eslint-disable-next-line no-undef-init
var rst = undefined;
for_each(src, (item, key, obj) => {
if (is_function(func)) {
if (func(item, key, obj) === true) {
rst = item;
return false;
}
} else if (is(item, func)) {
rst = item;
return false;
} else if (is_object(item) && is_object(func)) {
var subEqual = true;
for_each(func, (v, k) => {
subEqual = is_shallow_equal(item[k], v);
return subEqual;
});
if (subEqual) {
rst = item;
return false;
}
}
});
return rst;
}
module.exports = find;