Javascript 函数使用Json嵌套键进行迭代和算术运算

Javascript 函数使用Json嵌套键进行迭代和算术运算,javascript,json,vuejs2,Javascript,Json,Vuejs2,我需要创建一个函数来迭代json对象“菜单”,返回一些json嵌套键。使用其中三个键,我需要实现一些简单的算术运算,如下所示: 首先我需要把所有的土豆,然后我应该把所有的西红柿乘以这个牛肉,然后把结果除以胡萝卜。请注意,所有键都等于数字,因此计算类似于:(8*2.083488+40*1.5)/(180+180) 注意我的对象是一个计算属性,应该显示在vue模板中(但我认为这实际上对我来说不是最重要的事情) 提前谢谢,如果你需要更多的解释,我会在你身边 以下是我的功能: myFunc: fu

我需要创建一个函数来迭代json对象“菜单”,返回一些json嵌套键。使用其中三个键,我需要实现一些简单的算术运算,如下所示: 首先我需要把所有的
土豆
,然后我应该把所有的
西红柿
乘以这个
牛肉
,然后把结果除以
胡萝卜
。请注意,所有键都等于数字,因此计算类似于:(8*2.083488+40*1.5)/(180+180)

注意我的对象是一个计算属性,应该显示在vue模板中(但我认为这实际上对我来说不是最重要的事情)

提前谢谢,如果你需要更多的解释,我会在你身边

以下是我的功能:

   myFunc: function() {
      var array = JSON.parse(totalMenu);
      array.forEach(function(object) {
       console.log(object.carrots);
      });
    }
以下是JSON(包含在totalMenu对象中):


请注意,JSON不是完全有效的:键
foo54
是重复的(键必须是唯一的)。此外,这似乎是一个X-Y问题:为什么JSON输出会因为所有不同类型的嵌套级别而如此混乱?一个更合适的解决方案是:(1)修复JSON输出,并在一定程度上使其平坦;(2)在VueJS解析器中找到正确的逻辑。@Terry ahright这是我在为示例替换它们键时犯的错误,我更新了我的post@Terry根据的规范,它表示“一个对象是一组无序的名称/值对”,这意味着只要值不同,它就是有效集,因此也是有效集JSON@Ferrybig他在同一级别两次声明了同一个键——尽管规范没有提到是否允许使用唯一键,但大多数实现都会在解析后保留最后一个键值对,例如
var x={“foo54”:123,“foo54”:“lorem”}
如果调用
x['foo54']
,您将获得
lorem
。查看编辑历史记录,您将看到可能出现的错误。然而,这与他手头的问题无关:如果这是他真正的JSON输出,那么这不仅仅是一个提示。谢谢各位,我的问题呢?
      {
      "foo32":[
        {
            "dates":[
                {
                    "date":"2018-04-02",
                    "foo":[
                        {
                            "foo78":[
                                {
                                    "fooId":1
                                }
                            ],
                            "foo54":2.636000,
                            "beef":2.083488,
                            "foo09":0,
                            "foo":"",
                            "potatoes":8,
                            "foo90":0,
                            "foo55":0,
                            "fooLabel":"360 cheese nana "
                        }
                    ]
                },
                {
                    "date":"2018-04-03",
                    "fooReceipe":[
                        {
                            "foo65":0,
                            "fooID":"FX0000010000984",
                            "foo21":0,
                            "foo74":1,
                            "foo75":[
                                {
                                    "foo89":"NOR",
                                    "foo67":1
                                }
                            ],
                            "foo34":2.636000,
                            "beef":1.50,
                            "foo58":0,
                            "foo5":"",
                            "potatoes":40,
                            "foo2":0,
                            "foo":0,
                            "familleLabel":"Plate for nowhere "
                        }
                    ]
                }
            ],
            "familyLabel":"Starter",
            "fammilyreceipe":13,
            "family":7
        }
    ],
    "foo23":1002,
    "totalfoo":[
        {
            "foo4":0,
            "foo2":"2018-04-02",
            "foo":0,
            "carrots":180
        },
        {
            "foo3":0,
            "foo2":"2018-04-03",
            "foo":0,
            "carrots":180
        }
    ]
}