Как получить значение slug из массива объектов, если оно соответствует id? - PullRequest
2 голосов
/ 19 января 2020

Я пытаюсь получить значение slug из массива, если внутри массива object.extra.services один из элементов соответствует идентификатору, который я предоставляю .. .

// 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);
    }

Теперь мне нужно получить значение массива внутри массива, соответствующее указанному идентификатору сервиса.

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"
}]

Ответы [ 2 ]

3 голосов
/ 19 января 2020

Попробуйте включает :

const found = products.find(product => product.extra.services.includes("5cdd7c55f5abb90a689a3fcc"))
if (found) {
  console.log('found', found)
}
2 голосов
/ 19 января 2020

Если я правильно понял, вы можете добиться этого, используя find вместе с some :

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