2016-11-27 6 views
0

У меня есть вопрос в Ionic/AngularJs:Как искать в массиве объектов определенное поле, используя 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; 
}; 

Может вы решить этот вопрос?

especific код здесь:

// 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

Используйте функцию _.every из lodash

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


@Edit (на основе комментариев) _.some(yourArray,{cart_item_supply: yourValue})

это Wi ll возвратите вас TRUE если в Array будет yourValue об этом вы найдете там: https://lodash.com/docs/4.17.4#some

+0

Hi @DiPix Я использую теперь lodash. Это работает. Но я не могу получить первый идентификатор и получить только этот первый идентификатор из других регистров. – Ramos

+0

Можете ли вы привести мне пример? Коллекция, ваш запрос lodash и ожидаемый результат? – DiPix

+0

В начале создания объектов нет ничего. Пользователь выбирает продукт и создает первые массивы объектов. Итак, он выбирает другой продукт. Если этот новый продукт имеет то же значение поля «cart_item_supply» массива, то запустите и создайте новый объект, иначе покажите сообщение и не создайте новый объект. – Ramos

Смежные вопросы