AngularFor each - 循环通过多个数组

时间:2016-02-03 21:57:26

标签: angularjs

我有一个我从REST API获取的对象......

我想遍历一个内部数组,检查一个属性,如果该属性是true,则从该项中获取第二个属性。

这是数组;

orderItem:  { 
    id: 159
    name: Empanadas (Choice of 2)
    description: Choice of Diced Beef; Spinach, Stilton and Onion; or Smoked Ham and Mozzarella
    price: 700
    available: 1
    created_at: 2016-01-31 16:50:31
    updated_at: 2016-01-31 16:50:31
    menu_category_id: 41
    restaurant_id: 11
    menu_modifier_groups: 
        [  { 
            id: 9
            name: Choose 2 Empanadas
            instruction: null
            min_selection_points: 2
            max_selection_points: 2
            force_selection: 1
            created_at: 2016-02-01 01:03:35
            updated_at: 2016-02-01 01:12:23
            menu_item_id: 159
            restaurant_id: 11
                menu_modifier_items: 
                [  { 
                    id: 34
                    name: Diced Beef
                    price: 0
                    created_at: 2016-02-01 01:04:08
                    updated_at: 2016-02-01 01:04:08
                    menu_modifier_group_id: 9
                    restaurant_id: 11
                    menu_item_id: 159
                    selected: false
                 } ,  { 
                    id: 35
                    name: Smoked Salmon & Mozzarella
                    price: 0
                    created_at: 2016-02-01 01:04:37
                    updated_at: 2016-02-01 01:04:37
                    menu_modifier_group_id: 9
                    restaurant_id: 11
                    menu_item_id: 159
                    selected: true
                 } ,  { 
                    id: 36
                    name: Stilton, Spinach and Onion
                    price: 0
                    created_at: 2016-02-01 01:05:05
                    updated_at: 2016-02-01 01:05:05
                    menu_modifier_group_id: 9
                    restaurant_id: 11
                    menu_item_id: 159
                    selected: false
             }  ]
         }  ]
 }

我想要做的是找到menu_modifier_items = selected的所有true获取price每个人将它们加在一起,最后将它们添加到{{} 1 {} price

orderItem

这是我到目前为止所拥有的;

all menu_modifier_items price + orderItem price

在我的代码中,$scope.calculatePrice = function(orderItem) { var tot = orderItem.price; angular.forEach(orderItem.menu_modifier_groups[0].menu_modifier_items,function(item){ if(item.selected == true) { tot+=item.price; } return "Add for " + "₦" + tot; }); } 这意味着我正在获取第一个数组,但如果menu_modifier_groups[0]有多个orderItem会怎么样?如果我有menu_modifier_groupsmenu_modifier_groups[0]等...

感谢任何帮助/指导。

1 个答案:

答案 0 :(得分:2)

你只需要将2 forEach嵌套在一起 - 循环遍历组,然后遍历当前组内的项目:

$scope.calculatePrice = function(orderItem) {
    var tot = orderItem.price;

    angular.forEach(orderItem.menu_modifier_groups, function(group) {
        angular.forEach(group.menu_modifier_items, function(item) {
            if(item.selected == true) {
                tot+=item.price;
            }
        });
    });

    return "Add for " + "₦" + tot;
}