我有一种情况,即需要将两个对象一起压缩以保留两个值。我可以遍历这两个对象并构建一个所有键的数组。从嵌套属性数组中获取对象嵌套值
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