javascript - 在 Javascript 中循环访问三重嵌套对象

标签 javascript loops object

我已经声明了一个三重嵌套对象,如下所示:

var food = {
    "fruit": {
        "apples": {
            "redApples": 20,
            "greenApples": 30
        },
        "bananas": {
            "yellowBananas": 10
        }
    },
    "grains": {
        "bread": {
            "brownBread": 50
        }
    }
};

我找到了this question ,它适用于迭代对象的对象,但我被卡住了。我将如何迭代这个对象?

更新:对于这个特定问题,嵌套 for 循环可以正常工作,如下所示:

for(var key in food)
    for(var prop in food[key])
        for(var foo in food[key][prop])
            console.log(food[key][prop][foo]);

但是,下面有一些很好的递归函数,可以对无限嵌套的对象执行此操作。

最佳答案

马丁是对的,递归函数就是方法。您的函数应该检查对象的属性。如果是 - 函数必须通过调用自身来走得更深,但使用嵌套对象。

function recursiveIter(obj){
    for (var i in obj){
        if (typeof obj[i]=="object"){
            recursiveIter(obj[i]);
        }
        else {
            $('.ins').append(obj[i]);  // or what do you want to do with that           
        }
    }
}

recursiveIter(food);

jsfiddle用这种方法。

关于javascript - 在 Javascript 中循环访问三重嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16508582/

相关文章:

javascript - 在已存在的对象内创建对象数组

javascript - 从外部 html 文件加载handlebars.js 模板没有显示任何内容

javascript - 将watermark.js添加到Angular 4

javascript - 在 Javascript 中使用 'enum' 类型而不是字符串有什么意义吗?

javascript - 在 Cloudflare Worker 中发出一堆异步子请求并在全部完成后返回?

mysql - while 循环和毫秒

r - 对于需要条件检查的东西,有没有比 while 循环更有效的方法?

java - 在对象创建时定义类型,例如 HashMap<type here>

php - 如何将平面数组排序为多维树

c# - 尝试查找给定深层嵌套类/对象的属性名称