Javascript 在内部数组中查找项-angularJS

Javascript 在内部数组中查找项-angularJS,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我在angularJS中有一个函数,它使用find检查数组中是否存在项 function matchCartItem(item) { return $scope.cart[0].cart_items.find(function(itm) { return itm.item_id === item.item_id }); } 如您所见,我将项目传递给函数,然后检查传递的项目的项目id是否可以在购物车项目数组中的项目中找到 这很好,但现在我想修改它 cart\u i

我在
angularJS
中有一个函数,它使用
find
检查数组中是否存在项

function matchCartItem(item) {
    return $scope.cart[0].cart_items.find(function(itm) {
        return itm.item_id === item.item_id
    });
}
如您所见,我将
项目
传递给函数,然后检查传递的
项目
项目id
是否可以在
购物车项目
数组中的
项目
中找到

这很好,但现在我想修改它

cart\u items
有一个内部数组
cart\u modifier\u items
. 当传递
购物车项目时,它包含
购物车项目
。我的功能目前只检查匹配的
cart\u项目

如何更改此功能以同时检查购物车修改器项目

因此,我想在
$scope.cart[0].cart\u items
中检查是否匹配
item.item\u id
——我的函数执行此操作

但也要检查是否匹配
项目。
$scope.cart[0]中的cart\u modifier\u item[i]。cart\u items[i]。其中的cart\u modifier\u items
类似于在所有的
cart\u项目中循环`

感谢您的帮助/指导

项的数据结构

cart_item: [
    {
      "id": 159,
      "item_id": 20,
      "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,
      "cart_modifier_items": [
          {
              "id": 34,
              "item_id": 29,
              "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
          },
          {
              "id": 35,
              "item_id": 10,
              "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
          }
        ]
    }
]

使用标准
部分
而不是查找:

function matchCartItem(item) {
    return $scope.cart[0].cart_items.some(function(itm) {
        return itm.item_id === item.item_id;
    });
}

some
检查数组中的任何项目是否满足条件。

我认为,您只需循环两次即可找到好的购物车修改器项目:

var findModifier = function(itemId, cartModifierId, cart_items){
  var itemLen = cart_items.length;
  for(var i = 0; i < itemLen; ++i){
    if(cart_items[i].id === itemId){
      var modifierLen = cart_items[i].cart_modifier_items.length;
      for(var j = 0; j < modifierLen; ++j){
        if(cart_items[i].cart_modifier_items[j].id == cartModifierId){
          return true;
        }
      }
    }
  }
  return false;
}
var findModifier=函数(itemId、cartModifierId、cart\u items){
var itemLen=cart\u items.length;
对于(变量i=0;i
请参见plunker:

请显示数据结构和预期结果。请注意,
find()
没有通用浏览器支持,需要使用polyfill@charlietfl我已经添加了
项的结构。不使用
find
如何执行此操作内部数组如何
cart\u modifier\u items
我希望能够循环遍历
cart\u items
的内部数组,并返回一个
true
我可以看到您将许多项传递给函数。。。我只能传递
项目
我只传递:您的$scope.cart[0]。cart\u项目作为cart\u项目您的“项目”作为项目id和要查找的cart\u修饰符的id。是否只传递购物车修改器\u id?
item=cart\u item
cart\u修改器\u items
cart\u item
内。。。。。因此,
包含所有内容。我想在
$scope.cart[0].cart\u items中检查
item
,但您想:找到id=itm的cart items,完成后,找到具有另一个给定id的cart修饰符?是正确的,首先检查
$scope.cart[0].cart\u items中是否存在
cart\u items
。。如果存在,则检查我们发现的
购物车项目
的每个
购物车项目