2017-10-02 19 views
0

Ich habe ein Array von Objekten und muss herausfinden, ob ein Array von Objekten einen bestimmten Wert für eine Eigenschaft enthält? (Es kann für jede Eigenschaft sein).Überprüfen, ob ein Array von Objekten eine gegebene Zeichenfolge enthält

Z. B .:

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

Ich brauche eine Funktion, um die letzten zwei Objekte zurück, in dem Wert "John" existiert.

+0

Was Sie bisher versucht haben? – Li357

+0

Versuchen Sie, über das Array zu iterieren, dann iterieren Sie in der ersten Schleife über das Objekt und suchen Sie nach dem Wert! –

Antwort

3

Sie könnten das Array filtern und prüfen, ob ein Wert des Objekts die gewünschte Zeichenfolge enthält.

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

Was Sie tun Schleife durch das Array von Objekten könnte, und prüfen Sie, ob der Wert der Eigenschaft Ihren Text enthält. Dann können Sie das zu einem Array hinzufügen und die letzten 2 aus diesem Array mit slice nehmen.

Zum Beispiel:

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

Warum result.slice (-2)? –

Verwandte Themen