concatKeys.js 856 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. function concatKeys(obj, key, res) {
  2. let keys, val
  3. for (let k in obj) {
  4. if (typeof obj[k] === 'object') {
  5. keys = key ? key + '.' + k : k
  6. concatKeys(obj[k], keys, res)
  7. } else {
  8. keys = key ? key + '.' + k : k
  9. val = obj[k]
  10. Object.assign(res, { [keys]: val })
  11. // console.log(keys, val)
  12. }
  13. }
  14. }
  15. const a = {
  16. 'l-01': {
  17. level: 1,
  18. name: 'l-01',
  19. flag: '1111111',
  20. 'l-02.01': {
  21. level: 2,
  22. name: 'l-02.01',
  23. flag: '2222222',
  24. 'l-03.01': {
  25. level: 3,
  26. name: 'l-03.01',
  27. flag: '33333333',
  28. 'l-04.01': {
  29. level: 4,
  30. name: 'l-04.01',
  31. flag: '4444444444'
  32. }
  33. }
  34. },
  35. 'l-02.02': {
  36. level: 1,
  37. name: 'l-01.2',
  38. flag: '1212121212'
  39. }
  40. }
  41. }
  42. let res = {}
  43. concatKeys(a, '', res)
  44. console.log(res)