嗨,我有类似的东西:
var obj = {
level1 : {
level2 : 'value'
}
};
还有另一个对象:
var returnData = {
value: "level1.level2",
anotherThing: "level1"
};
我想循环访问 returnData
对象中的所有键,并从 obj
对象中获取这些值。我有这个,但无法获取 returnData 中键 value
所需的值:
var dataToreturn = [];
$.each(returnData, function(k, v) {
dataToreturn[k] = obj[v];
});
所以最终的结果是:
dataToreturn[value] = 'value';
dataToreturn[anotherThing] = {
level2 : 'value'
};
最佳答案
您可以同时使用forEach()
和reduce()
。 forEach
循环对象键,然后 split()
.
处的每个值,然后使用 reduce()
循环这些值并添加到数组中。
var obj = {
level1: {
level2: 'value'
}
};
var returnData = {
value: "level1.level2",
anotherThing: "level1"
};
var dataToreturn = [];
Object.keys(returnData).forEach(function(e) {
var keys = returnData[e].split('.')
keys.reduce(function(r, e, i) {
if (keys[i + 1] && r[e]) return r[e]
else if (r[e]) dataToreturn.push(r[e])
return r;
}, obj)
})
console.log(dataToreturn)
关于javascript - 获取多维数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44182847/