如果与提供的 id 匹配,如何从对象数组中获取 slug 值?

Posted

技术标签:

【中文标题】如果与提供的 id 匹配,如何从对象数组中获取 slug 值?【英文标题】:How to get slug value from array of objetcs if match with provide id? 【发布时间】:2020-05-05 20:50:50 【问题描述】:

我正在尝试从数组中获取 slug 值,如果在 object.extra.services 数组中,其中一个元素与我提供的 id 匹配...

// Service ID provided
const serviceID = '5cdd7c55f5abb90a689a44be';

// Array of services Ids
getProductsServices(products) 
      const productsServices = [
        ...new Set(products.map(product => product.extra.services))
      ];
      const productsList = [].concat.apply([], productsServices);
      return productsList;
    ,

// ServiceId Matching
serviceMatch(serviceID) 
      return this.getProductsServices.includes(serviceID);
    

现在我需要在数组中获取与提供的服务 ID 匹配的 slug 值。

products [
    "_id" : ObjectId("5e0257dcbe760674b10d4122"),
    "desc" : "Diseño de Pagina Web",
    "extra" : 
        "image" : "/2018/06/diseño-de-logos-para-empresas.jpg",
        "services" : [ 
            "5cdd7c55f5abb90a689a44be", 
            "5cdd7c55f5abb90a689a3fcc", 
            "5cdd7c55f5abb90a689a3f42"
        ]
    ,
    "name" : "Diseño de logo",
    "slug" : "diseno-de-logotipos-online"
,

    "_id" : ObjectId("5e0257dcbe760674b10d4122"),
    "desc" : "Diseño de logo",
    "extra" : 
        "image" : "/2018/06/diseño-de-logos-para-empresas.jpg",
        "services" : [ 
            "5cdd7c55f5abb90a689a44be", 
            "5cdd7c55f5abb90a689a3fcc", 
            "5cdd7c55f5abb90a689a3f42"
        ]
    ,
    "name" : "Diseño de logo",
    "slug" : "diseno-de-logotipos-online"
,

    "_id" : ObjectId("5e0257dcbe760674b10d4122"),
    "desc" : "Diseño de Interior",
    "extra" : 
        "image" : "/2018/06/diseño-de-logos-para-empresas.jpg",
        "services" : [ 
            "5cdd7c55f5abb90a689a44be", 
            "5cdd7c55f5abb90a689a3fcc", 
            "5cdd7c55f5abb90a689a3f42"
        ]
    ,
    "name" : "Diseño de logo",
    "slug" : "diseno-de-logotipos-online"
]

【问题讨论】:

【参考方案1】:

尝试包含

const found = products.find(product => product.extra.services.includes("5cdd7c55f5abb90a689a3fcc"))
if (found) 
  console.log('found', found)

【讨论】:

【参考方案2】:

如果我理解正确,您可以使用find 和some 来实现它:

const product = productsList.find(product => product.extra.services.some(id => id === serviceID))
console.log(product.slug)

【讨论】:

太棒了,这就像一个魅力,对我的工作进行了一些改变,我的朋友,Namaste...希望你的人生道路变得更加光明!

以上是关于如果与提供的 id 匹配,如何从对象数组中获取 slug 值?的主要内容,如果未能解决你的问题,请参考以下文章

如果在 Gatsby 中布尔键匹配 true,则从对象内的对象数组中获取项目 - Graphql

如何从可能是与给定 id 匹配的父级或子级之一的列表中获取对象

PyMongo:如何获取与任何可能的过滤器匹配的所有对象?

使用 Mongoose 从 JSON 对象数组中查询具有匹配 ID 的集合

我有一个包含2个对象的数组,在每个对象中,我都有一个对象数组。我只想获取与属性匹配的那些数据

如何从与某个键匹配的 JSON 对象创建一个数组?