Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从其他对象中取出对象_Javascript_Object_For Loop - Fatal编程技术网

Javascript 从其他对象中取出对象

Javascript 从其他对象中取出对象,javascript,object,for-loop,Javascript,Object,For Loop,我要更改此对象: { item1: 6, item2: { item3: 1, item4: 1 }, item4: 1, item5: { item3: 1, item1: 3 } } 为此目的: { item1: 9, item3: 2, item4: 2 } 因此,从每个对象中获取所有键:值,并将它们插入到一个对象中并求和 我的实际代码: functi

我要更改此对象:

{
    item1: 6,
    item2: {
        item3: 1,
        item4: 1
    },
    item4: 1,
    item5: {
        item3: 1,
        item1: 3
    }
}
为此目的:

{
    item1: 9,
    item3: 2,
    item4: 2
}
因此,从每个对象中获取所有键:值,并将它们插入到一个对象中并求和

我的实际代码:

function calculate_recipe(item, quantity) {
    if (json.options[item].material) {
        return quantity;
    } else {
        let crafting_quantity = json.craftable[item].quantity
        let ingredients = json.craftable[item].ingredients
        let items_needed = {}
        for (let ingredient in ingredients) {
            let ingredient_quantity = ingredients[ingredient]
            items_needed[ingredient] = calculate_recipe(ingredient, Math.ceil(quantity / crafting_quantity) * ingredient_quantity);
        }
        return items_needed
    }
}

returnitems\u needed
返回我之前显示的第一个对象。

您可以为嵌套对象的递归调用获取一个映射,然后返回一个平面对象

函数getFlatSum(对象,映射=新映射){ Object.entries(Object.forEach)([k,v])=>{ if(v&&typeof v=='object'){ getFlatSum(v,map); }否则{ map.set(k,(map.get(k)| 0)+v); } }); 返回Object.assign({},…Array.from(map,([k,v])=>({[k]:v})); } var data={item1:6,item2:{item3:1,item4:1},item4:1,item5:{item3:1,item1:3}, 结果=getFlatSum(数据);
控制台日志(结果)请您展示一下您为解决此问题所做的任何努力,以便我们可以帮助您解决您遇到的问题?就目前而言,这太宽泛了。我添加了我的代码