2013-06-21 34 views
0

具有對象:Javascript成爲遍歷嵌套的對象,獲取值和鏈接鍵

Nested1: { 
    "nested21": { 
     "nested31": { 
      value: "im sooo nested" 
     } , 
     "nested32": { 
      value: "im sooo nested" 
     } 
    }, 
    "nested22": { 
     "nested31": { 
      value: "im sooo nested" 
     } , 
     "nested32": { 
      value: "im sooo nested" 
     } 
    } 
} 

哪裏有可以被嵌套對象的未定義的數字,我希望得到的東西,如:

 
Nested1.nested21.nested31 - im sooo nested 
Nested1.nested21.nested32 - im sooo nested 

等等

我在想一個遞歸函數,但如何保持在內存中的鏈接鍵?

+0

是的,但沒有規定如何獲取價值觀和「鏈接」按鍵 – Rayjax

回答

0

得到它

var obj, traverse; 

obj = { 
    a: { 
    b: 1, 
    c: 2 
    }, 
    d: { 
    e: 3, 
    f: 4 
    } 
}; 

traverse = function(node, path) { 
    var pairs; 
    if (!(pairs = _(node).pairs()).length) { 
    return [ 
     { 
     keys: path, 
     value: node 
     } 
    ]; 
    } else { 
    return [].concat.apply([], _(pairs).map(function(kv) { 
     return traverse(kv[1], path.concat(kv[0])); 
    })); 
    } 
}; 

console.log(traverse(obj, []));