繁体   English   中英

检查对象数组是否包含给定的字符串

[英]Check whether an array of objects contain a given string

我有一个对象数组,需要查找对象数组是否包含任何属性的给定值? (可以用于任何财产)。

例如:

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

我需要一个函数来返回值“ John”存在的最后两个对象。

您可以对数组进行过滤,以检查对象的值是否包含所需的字符串。

 var data = [{ product_name: "I phone 7s ", cost: "122", type: "product" }, { name: "Joh Snow ", email: "jon_snow@got.com", 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); 

您可以做的是遍历对象数组,然后检查属性值是否包含您的文本。 然后,您可以将其添加到数组中,并使用slice从该数组中获取最后2个。

例如:

 var objects = [ {product_name: "iphone 7s ", cost: "122", type: "product"}, {name: "John Snow ", email: "jon_snow@got.com", 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")); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM