Skip to content

Commit e5ca0ab

Browse files
Convert the result object to key and value arrays.
1 parent 3c11c34 commit e5ca0ab

File tree

4 files changed

+43
-11
lines changed

4 files changed

+43
-11
lines changed

de_nest.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
const { varInfo, updatePv, ecma2015ArrMerge } = require('./js_nest_helpers.js')
1+
const { varInfo, updatePv, ecma2015ArrMerge, convertObjectToArrays } = require('./js_nest_helpers.js')
2+
3+
const flattenAnything = (obj) => {
4+
const result = handleNested(obj);
5+
return convertObjectToArrays(result);
6+
}
27

38
const handleNested = (obj) => {
49
const [oldKey, val] = varInfo(obj)
@@ -41,6 +46,7 @@ const commonReduceLogic = ({ key, oldKey, value, previousValue }, currFullKey, c
4146
}
4247

4348
module.exports = {
49+
flattenAnything,
4450
handleNested,
4551
reduceArray,
4652
reduceObject,

js_nest_helpers.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
const { handleNested } = require('./de_nest.js')
22

3-
43
const varInfo = (obj) => {
54
const oldKey = Object.keys(obj)
65
const val = obj[oldKey[0]]
@@ -22,8 +21,15 @@ const ecma2015ArrMerge = (resultsObject, pV) => {
2221

2322
}
2423

24+
const convertObjectToArrays = (obj) => {
25+
const keysArray = Object.keys(obj);
26+
const valuesArray = Object.values(obj);
27+
return { keys: keysArray, values: valuesArray }
28+
}
29+
2530
module.exports = {
2631
varInfo,
2732
updatePv,
28-
ecma2015ArrMerge
33+
ecma2015ArrMerge,
34+
convertObjectToArrays
2935
}

runner.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
const { handleNested,reduceArray,reduceObject, commonReduceLogic } = require('./de_nest.js')
1+
const { flattenAnything, handleNested,reduceArray,reduceObject, commonReduceLogic } = require('./de_nest.js')
22
const { varInfo, updatePv, ecma2015ArrMerge } = require('./js_nest_helpers.js')
33

44
const obj = { a: 7, b: 2, c: {value:3} };
55
const arr = [7, undefined, {value: undefined, value2: 4}, 1, 2, 3, 4];
66

77
console.log('\ninput: ', {obj}, '\n')
8-
console.log(handleNested({obj}))
8+
console.log(flattenAnything({obj}))
99

1010
console.log('\ninput: ', arr, '\n')
11-
console.log(handleNested({arr}))
11+
console.log(flattenAnything({arr}))

test.js

+25-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const assert = require('assert')
22
const { describe, it } = require('mocha');
3-
const { handleNested,reduceArray,reduceObject, commonReduceLogic } = require('./de_nest.js')
4-
const { varInfo, updatePv, ecma2015ArrMerge } = require('./js_nest_helpers.js')
3+
const { flattenAnything, handleNested,reduceArray,reduceObject, commonReduceLogic } = require('./de_nest.js')
4+
const { varInfo, updatePv, ecma2015ArrMerge, convertObjectToArrays } = require('./js_nest_helpers.js')
55

66
const obj = { a: 7, b: 2, c: {value:3} };
77
describe('sanity', () => {
@@ -18,12 +18,23 @@ describe('de-nest is working properly for', () => {
1818
const arr = [7, undefined, {value: undefined, value2: 4}, 1, 2, 3, 4];
1919
const obj = { a: 7, b: 2, c: {value:3} };
2020

21+
it('flattenAnything, evaluate an array as an array', () => {
22+
assert.equal(
23+
JSON.stringify(flattenAnything({arr})),
24+
'{"keys":["arr[0]","arr[2].value2","arr[3]","arr[4]","arr[5]","arr[6]"],"values":[7,4,1,2,3,4]}'
25+
);
26+
})
27+
2128
it('handleNested, evaluate an array as an array', () => {
22-
assert.equal(JSON.stringify(handleNested({arr})),'{"arr[0]":7,"arr[2].value2":4,"arr[3]":1,"arr[4]":2,"arr[5]":3,"arr[6]":4}' );
29+
assert.equal(
30+
JSON.stringify(handleNested({arr})),
31+
'{"arr[0]":7,"arr[2].value2":4,"arr[3]":1,"arr[4]":2,"arr[5]":3,"arr[6]":4}'
32+
);
2333
})
2434

2535
it('reduce array method should give array syntax top level with either as it nests deeper', () => {
26-
assert.equal(JSON.stringify(reduceArray(['arr', arr])),'{"arr[0]":7,"arr[2].value2":4,"arr[3]":1,"arr[4]":2,"arr[5]":3,"arr[6]":4}' );
36+
assert.equal(JSON.stringify(reduceArray(['arr', arr])),
37+
'{"arr[0]":7,"arr[2].value2":4,"arr[3]":1,"arr[4]":2,"arr[5]":3,"arr[6]":4}' );
2738
})
2839

2940
it('reduce a array method should not give object syntax top level', () => {
@@ -39,6 +50,10 @@ describe('de-nest is working properly for', () => {
3950
const obj = { a: 7, b: 2, c: {value:3} };
4051
const arr = [7, undefined, {value: undefined, value2: 4}, 1, 2, 3, 4];
4152

53+
it('flattenAnything, evaluate an object as an object', () => {
54+
assert.equal(JSON.stringify(flattenAnything({obj})),'{"keys":["obj.a","obj.b","obj.c.value"],"values":[7,2,3]}' );
55+
})
56+
4257
it('handleNested, evaluate an object as an object', () => {
4358
assert.equal(JSON.stringify(handleNested({obj})),'{"obj.a":7,"obj.b":2,"obj.c.value":3}' );
4459
})
@@ -60,4 +75,9 @@ describe('de-nest is working properly for', () => {
6075
assert.equal(JSON.stringify(ecma2015ArrMerge(mergeObj1, mergeObj2)), '{"c":{"value":3},"d":2,"a":7,"b":2}');
6176
})
6277
})
63-
})
78+
79+
describe('#convert', () => {
80+
const obj = {"obj.a":7,"obj.b":2,"obj.c.value":3}
81+
assert.equal(JSON.stringify(convertObjectToArrays(obj)),'{"keys":["obj.a","obj.b","obj.c.value"],"values":[7,2,3]}')
82+
})
83+
})

0 commit comments

Comments
 (0)