1 | var forOwn = require('./forOwn');
|
2 | var isPlainObject = require('../lang/isPlainObject');
|
3 |
|
4 | |
5 |
|
6 |
|
7 |
|
8 | function flattenTo(obj, result, prefix, level) {
|
9 | forOwn(obj, function (value, key) {
|
10 | var nestedPrefix = prefix ? prefix + '.' + key : key;
|
11 |
|
12 | if (level !== 0 && isPlainObject(value)) {
|
13 | flattenTo(value, result, nestedPrefix, level - 1);
|
14 | } else {
|
15 | result[nestedPrefix] = value;
|
16 | }
|
17 | });
|
18 |
|
19 | return result;
|
20 | }
|
21 |
|
22 | |
23 |
|
24 |
|
25 |
|
26 |
|
27 | function flatten(obj, level) {
|
28 | if (obj == null) {
|
29 | return {};
|
30 | }
|
31 |
|
32 | level = level == null ? -1 : level;
|
33 | return flattenTo(obj, {}, '', level);
|
34 | }
|
35 |
|
36 | module.exports = flatten;
|
37 |
|
38 |
|