Skip to content

Instantly share code, notes, and snippets.

@kaw2k
Created December 7, 2016 02:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kaw2k/138b3b00363bce6cfc4db256b86374a3 to your computer and use it in GitHub Desktop.
Save kaw2k/138b3b00363bce6cfc4db256b86374a3 to your computer and use it in GitHub Desktop.
const treeArray = [
{ path: 'name', value: 'name' },
{ path: 'meta.age', value: 'age' },
{ path: 'meta.eyes', value: 'eyes' },
{ path: 'friends.[0]', value: 'friends 0' },
{ path: 'friends.[1]', value: 'friends 1' },
{ path: 'friends.[2]', value: 'friends 2' },
{ path: 'friends.[3].name', value: 'friends 3 name' },
]
const makeJson = (arrayOfNodes) => { /* ... */ }
console.log(makeJson(treeArray))
/*
{
name: 'name',
meta: {
age: 'age',
eyes: 'eyes'
},
friends: [
'friends 0',
'friends 1',
'friends 2',
{
name: 'friends 3 name'
}
]
}
/*
@matt-tingen
Copy link

Is this cheating?

import set from 'lodash/set'
const makeJson = (arrayOfNodes) => {
    const fixPath = (path) => path.replace('.[', '[')
    const json = {}
    arrayOfNodes.each(({path, value}) => {
        set(json, fixPath(path), value)
    })
    return json
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment