如何使用Ionic / AngularJs在特定字段上搜索对象数组?

时间:2016-11-27 19:23:51

标签: angularjs ionic-framework

我在Ionic / AngularJs中有一个问题:

我对一个无法正常工作的对象进行了两次搜索。 第一个if (cartObj.cart.find (id)! = - 1) {--->这没关系。

第二个是if(cartObj.cart.findvovo(supply_id)!= - 1){ 如果第一个if的值等于我想要获取它接受的字段。

我只想从" cart_item_supply":supply_id获取数据。我怎么能这样做?

enter image description here

在附加的屏幕中,我向我的控制台显示了数组对象,以便您更好地理解。

这是我的代码:

var cartObj = {};
cartObj.cart=[];
cartObj.total_amount=0;
cartObj.total_qty=0;


// VERIFICA DE JÁ EXISTE ITENS NO CARRINHO
cartObj.cart.add=function(id,image,name,price,qty,supply_id,deliver){
    if( cartObj.cart.find(id)!=-1  ){
        var alertPopup = $ionicPopup.alert({
            title: 'This product has already been added',
            template: 'Add more quantity to cart'

        });

    }if( cartObj.cart.findvovo(supply_id) !=-1){
        var alertPopup = $ionicPopup.alert({
            title: 'This offer is from Another Grandmother',
            template: 'You can only buy offers from a single Grandma. Choose other offers from this same Grandma.'
        });
    }

    // IF DON´T EXIST, ADD
    else{
        cartObj.cart.push( { "cart_item_id": id , "cart_item_image": image , "cart_item_name": name , "cart_item_price": price , "cart_item_qty": qty, "cart_item_supply": supply_id, "cart_item_deliver": deliver  } );
        cartObj.total_qty+=1;   
        cartObj.total_amount+=parseInt(price);  
        console.log(cartObj);
    }
};

// SEACH PRODUCTS BY ID
cartObj.cart.find=function(id){ 
    console.log("chamou find");
    var result=-1;
    for( var i = 0, len = cartObj.cart.length; i < len; i++ ) {
        if( cartObj.cart[i].cart_item_id === id ) {
            result = i;
            console.log(result);
            break;
        }
    }
    return result;        
};

// SEARCH CART_ITEM_SUPPLY === SUPPLY_ID --- HERE DONT FOUND
cartObj.cart.findvovo=function(supply_id){         
    var result=-1;
    for( var i = 0, len = cartObj.cart.length; i < len; i++ ) {            
        if( cartObj.cart[i].cart_item_supply === supply_id ) {            
            result = i;
            console.log(result);
            break;
        }
    };
    return result; 
};

你能解决这个问题吗?

具体代码在这里:

// SEARCH CART_ITEM_SUPPLY === SUPPLY_ID --- HERE DONT FOUND
cartObj.cart.findvovo=function(supply_id){         
    var result=-1;
    for( var i = 0, len = cartObj.cart.length; i < len; i++ ) {            
        if( cartObj.cart[i].cart_item_supply === supply_id ) {            
            result = i;
            console.log(result);
            break;
        }
    };
    return result; 
};

1 个答案:

答案 0 :(得分:1)

使用lodash

中的函数_.every

https://lodash.com/docs/4.17.2#every

@Edit(根据评论) _.some(yourArray,{cart_item_supply: yourValue})

这将返回TRUE,如果在数组中yourValue更多关于此信息,您会在那里找到:https://lodash.com/docs/4.17.4#some