2017-10-02 3 views
0

J'ai un tableau d'objets et ai besoin de trouver si un tableau d'objets contient une valeur donnée pour une propriété? (Cela peut être pour n'importe quelle propriété).Vérifier si un tableau d'objets contient une chaîne donnée

.: par exemple

[ 
    {product_name: "iphone 7s " , cost: "122" , type: "product" }, 
    {name: "John Snow " , email: "[email protected]" , type: "contact"}, 
    {seller_name: "John Smith " , brand: "Xbrand" , type: "seller"} 
]; 

je besoin d'une fonction pour renvoyer les deux derniers objets dont la valeur « John » existe.

+0

Qu'avez-vous essayé jusqu'ici? – Li357

+0

Essayez d'effectuer une itération sur la matrice, puis parcourez l'objet dans la première boucle et recherchez la valeur! –

Répondre

3

Vous pouvez filtrer le tableau et vérifier si une valeur de l'objet contient la chaîne voulue.

var data = [{ product_name: "I phone 7s ", cost: "122", type: "product" }, { name: "Joh Snow ", email: "[email protected]", type: "contact" }, { seller_name: "Joh Smith ", brand: "Xbrand", type: "seller" }], 
 
    result = data.filter(o => Object.values(o).some(s => s.includes('Joh'))); 
 
    
 
console.log(result);

0

Qu'est-ce que vous pourriez faire est en boucle à travers le réseau d'objets, et vérifier si la valeur de la propriété contient votre texte. Ensuite, vous pouvez ajouter cela à un tableau et prendre les 2 derniers de ce tableau en utilisant slice.

Par exemple:

var objects = [ 
 
    {product_name: "iphone 7s ", cost: "122", type: "product"}, 
 
    {name: "John Snow ", email: "[email protected]", type: "contact"}, 
 
    {seller_name: "John Smith ", brand: "Xbrand", type: "seller"} 
 
]; 
 

 
function getObjectsContaining(coll, value) { 
 
    var results = []; 
 

 
    for (var i = 0; i < coll.length; i++) { 
 
     var obj = coll[i]; 
 
     for (var property in obj) { 
 
      if (obj.hasOwnProperty(property) && obj[property].indexOf(value) !== -1) { 
 
       results.push(obj); 
 
      } 
 
     } 
 
    } 
 
    return results.slice(-2); 
 
} 
 

 
console.log(getObjectsContaining(objects, "John"));

+0

Pourquoi results.slice (-2)? –