【发布时间】:2013-10-11 08:13:30
【问题描述】:
我有一种情况,我需要将两个对象压缩在一起,同时保留这两个值。我可以遍历这两个对象并构建一个包含所有键的数组。
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('.'));
如果我可以遍历该数组并检查属性是否存在于它们中,则构建组合“压缩”值的新对象。
【问题讨论】:
-
window !== obj,这无论如何都行不通。但是,是的,您可以使用一个简单的循环。 -
检查any of these duplicates - 只需省略
.split("."),因为您已经有一个数组 -
我认为这是某种XY problem。你的
zip到底应该做什么,为什么你需要财产链?
标签: javascript arrays node.js javascript-objects