通过查看“Array”图像,我该如何访问此阵列的所有级别?
我试过做一个foreach但这只允许我访问第一个对象,我无法访问填充了字符串的第二个对象。
for (var key in result)
{
if (result.hasOwnProperty(key))
{
console.log(key, result[key]);
for(var item in result[key])
{
console.log(item);
}
}
}
我也尝试过:
result[key[item]]
但它似乎是不分化的。
我知道通过名称访问所有元素很容易,但名称不断变化,因此解决方案应该是动态的。
我在评论中添加了演示以查看行为。
答案 0 :(得分:0)
Object.keys(obj)
返回obj
中的键数组。
var obj = {
a: 1,
b: 2,
m: 3,
x: 4,
y: 5,
z: 6
}
//get all the keys in an array:
var keys = Object.keys(obj)
console.log("keys: " + keys);
//iterate through the object by its keys:
for (var i = 0; i < keys.length; i++){
console.log("key " + keys[i] + " has value " + obj[keys[i]]);
}
&#13;
我认为您要求将此解决方案应用于任意深度的对象。我的解决方案是将前一个技巧包装在一个函数中,并在有嵌套对象的情况下递归调用它:
var obj = {
a: {foo:"bar",foof:"barf"},
b: 2,
m: 3,
x: {baz:{really:{more:{objects: "yeah, there could be a lot"}}}},
y: 5,
z: 6
}
function getKeysDeep(obj,prefix){
//get all the keys in an array:
var keys = Object.keys(obj)
//console.log(prefix + "keys: " + keys);
//iterate through the object by its keys:
for (var i = 0; i < keys.length; i++){
if (obj[keys[i]] !== null && typeof obj[keys[i]] === 'object') {
console.log("key " + keys[i] + "'s value is an object");
getKeysDeep(obj[keys[i]],prefix + keys[i] + ": ");
} else {
console.log(prefix + "key " + keys[i] + " has value " + obj[keys[i]]);
}
}
}
getKeysDeep(obj,"")
&#13;
答案 1 :(得分:0)
这个循环也有效!
Object.keys(result).forEach(function (key) {
console.log(result[key]);
var test = result[key];
Object.keys(test).forEach(function (key) {
console.log(test[key]);
var testTwo = test[key];
Object.keys(testTwo).forEach(function (key) {
console.log(testTwo[key]);
var testThree = testTwo[key];
});
});
});
但@nvioli答案更准确。