UNPKG

bbo

Version:

bbo is a utility library of zero dependencies for javascript.

41 lines (36 loc) 956 B
'use strict'; 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;