2017-10-02 11 views
0

私はオブジェクトの配列を持っており、オブジェクトの配列に任意のプロパティの値が含まれているかどうかを調べる必要がありますか? (それはどんなプロパティでも可能です)。オブジェクトの配列に指定された文字列が含まれているかどうかをチェック

例えば:

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

私は「ジョン」は存在する値の最後の2つのオブジェクトを返すように関数が必要です。

+0

? – Li357

+0

配列を反復処理してから、最初のループ中にオブジェクトを反復処理し、値を検索してください。 –

答えて

3

オブジェクトの値に目的の文字列が含まれているかどうかをチェックして、配列にフィルタをかけることができます。あなたは何ができるか

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

オブジェクトの配列をループし、プロパティの値は、あなたのテキストが含まれているかどうかを確認します。次に、それを配列に追加して、sliceを使ってその配列から最後の2つを取ることができます。例えば

:あなたがこれまでに試してみました何

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

なぜresults.slice(-2)ですか? –

関連する問題