1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | 'use strict';
|
9 |
|
10 | var isObject = require('is-extendable');
|
11 |
|
12 | module.exports = function omit(obj, props, fn) {
|
13 | if (!isObject(obj)) return {};
|
14 |
|
15 | if (typeof props === 'function') {
|
16 | fn = props;
|
17 | props = [];
|
18 | }
|
19 |
|
20 | if (typeof props === 'string') {
|
21 | props = [props];
|
22 | }
|
23 |
|
24 | var isFunction = typeof fn === 'function';
|
25 | var keys = Object.keys(obj);
|
26 | var res = {};
|
27 |
|
28 | for (var i = 0; i < keys.length; i++) {
|
29 | var key = keys[i];
|
30 | var val = obj[key];
|
31 |
|
32 | if (!props || (props.indexOf(key) === -1 && (!isFunction || fn(val, key, obj)))) {
|
33 | res[key] = val;
|
34 | }
|
35 | }
|
36 | return res;
|
37 | };
|