1 | var arrayMap = require('./_arrayMap'),
|
2 | baseClone = require('./_baseClone'),
|
3 | baseUnset = require('./_baseUnset'),
|
4 | castPath = require('./_castPath'),
|
5 | copyObject = require('./_copyObject'),
|
6 | flatRest = require('./_flatRest'),
|
7 | getAllKeysIn = require('./_getAllKeysIn');
|
8 |
|
9 |
|
10 | var CLONE_DEEP_FLAG = 1,
|
11 | CLONE_FLAT_FLAG = 2,
|
12 | CLONE_SYMBOLS_FLAG = 4;
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 | var omit = flatRest(function(object, paths) {
|
35 | var result = {};
|
36 | if (object == null) {
|
37 | return result;
|
38 | }
|
39 | var isDeep = false;
|
40 | paths = arrayMap(paths, function(path) {
|
41 | path = castPath(path, object);
|
42 | isDeep || (isDeep = path.length > 1);
|
43 | return path;
|
44 | });
|
45 | copyObject(object, getAllKeysIn(object), result);
|
46 | if (isDeep) {
|
47 | result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG);
|
48 | }
|
49 | var length = paths.length;
|
50 | while (length--) {
|
51 | baseUnset(result, paths[length]);
|
52 | }
|
53 | return result;
|
54 | });
|
55 |
|
56 | module.exports = omit;
|