我有一種情況,即需要將兩個對象一起壓縮以保留兩個值。我可以遍歷這兩個對象並構建一個所有鍵的數組。從嵌套屬性數組中獲取對象嵌套值
var traverse = function (obj, chain) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
var tempChain = [].concat(chain || []);
tempChain.push(prop);
if (typeof obj[prop] === 'object') {
traverse(obj[prop], tempChain);
}
console.log(tempChain);
}
}
};
傳遞如下所示:
traverse({
'a': {
'b': 'hello world',
'b1': 'hello world 1',
'c': {
'd': 'dello'
}
}
})
會回到我:
[a]
[a,b]
[a,b1]
[a,c]
[a, c, d]
所以我現在有嵌套屬性的對象數組。我如何訪問本質obj [[a,c,d]]?我知道我可以通過eval解決問題,但我無法相信內容。
eval('window.' + ['a','c','d'].join('.'));
如果可以通過陣列環,並檢查,以查看是否在兩者存在屬性,然後生成的組合「拉鍊」值的新對象。
'窗口== obj',這不會反正工作。但是,是的,你可以使用一個簡單的循環。 – Bergi
檢查[任何這些重複](http://stackoverflow.com/a/14397052/1048572) - 只是省略'.split(「。」)''因爲你已經有一個數組 – Bergi
我認爲這是某種[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你的'zip'應該做什麼,爲什麼你需要物業鏈? – Bergi