javascript – json对象的完整路径

前端之家收集整理的这篇文章主要介绍了javascript – json对象的完整路径前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图压扁一个对象,其中键将是叶节点的完整路径.我可以递归地识别哪些是叶节点但是试图构建整个路径.

样本输入:

  1. {
  2. one: 1,two: {
  3. three: 3
  4. },four: {
  5. five: 5,six: {
  6. seven: 7
  7. },eight: 8
  8. },nine: 9
  9. }

输出

  1. {
  2. one: 1,'two.three': 3,'four.five': 5,'four.six.seven': 7,'four.eight': 8,nine: 9
  3. }

解决方法

您可以使用递归的approch并收集对象的键.该提议也在寻找数组.
  1. function getFlatObject(object) {
  2. function iter(o,p) {
  3. if (Array.isArray(o) ){
  4. o.forEach(function (a,i) {
  5. iter(a,p.concat(i));
  6. });
  7. return;
  8. }
  9. if (o !== null && typeof o === 'object') {
  10. Object.keys(o).forEach(function (k) {
  11. iter(o[k],p.concat(k));
  12. });
  13. return;
  14. }
  15. path[p.join('.')] = o;
  16. }
  17.  
  18. var path = {};
  19. iter(object,[]);
  20. return path;
  21. }
  22.  
  23. var obj = { one: 1,two: { three: 3 },four: { five: 5,six: { seven: 7 },eight: 8 },nine: 9 },path = getFlatObject(obj);
  24. console.log(path);

猜你在找的JavaScript相关文章