-
-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathgetCondenseDeep.js
37 lines (34 loc) · 928 Bytes
/
getCondenseDeep.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
'use strict';
var getCondense = require('./getCondense.js');
var getEachDeep = require('./getEachDeep.js');
function getCondenseDeep(_) {
var eachDeep = getEachDeep(_);
var condense = getCondense();
var _each = _.each || _.forArray;
function condenseDeep(obj, options) {
options = _.merge(
{
checkCircular: false,
},
options || {}
);
var eachDeepOptions = {
checkCircular: options.checkCircular,
ownPropertiesOnly: options.ownPropertiesOnly,
};
var arrays = [];
//console.log('condenseDeep → eachDeep');
eachDeep(
obj,
function (value, key, parent, context) {
if (!context.isCircular && Array.isArray(value)) { arrays.push(value); }
},
eachDeepOptions
);
if (Array.isArray(obj)) { arrays.push(obj); }
_each(arrays, condense);
return obj;
}
return condenseDeep;
}
module.exports = getCondenseDeep;