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
。。如果存在,则检查我们发现的购物车项目
的每个购物车项目