javascript - Sök arraydelar efter del i någon egenskap


Jag har den här typen av objekt i TypeScript

const photos = 
  {
  "albumId": "1",
  "title": "quidem molestiae enim",
  "created": "1",
  "photos": [
    {
      "id": "1",
      "title": "sunset",
      "url": "https://via.placeholder.com/600/92c952",
      "thumbnailUrl": "https://via.placeholder.com/150/92c952"
    },
    {
      "id": "2",
      "title": "today is sunshine",
      "url": "https://via.placeholder.com/600/771796",
      "thumbnailUrl": "https://via.placeholder.com/150/771796"
    },
    {
      "id": "3",
      "title": "test",
      "url": "https://via.placeholder.com/600/24f355",
      "thumbnailUrl": "https://via.placeholder.com/150/24f355"
    }
  ]
}

Jag behöver trycka ut alla värden som inte finns i strängen, sökningen utförs i photos.photos.title. Här är ett exempel, låt oss säga att jag har en sträng som denna

const searchText = 'sun';

Jag behöver söka i photos.photos.title och ta bort alla photos.photos som inte innehåller en del av det ordet. Mina nya foton ska se ut så här

const photos = 
  {
  "albumId": "1",
  "title": "quidem molestiae enim",
  "created": "1",
  "photos": [
    {
      "id": "1",
      "title": "sunset",
      "url": "https://via.placeholder.com/600/92c952",
      "thumbnailUrl": "https://via.placeholder.com/150/92c952"
    },
    {
      "id": "2",
      "title": "today is sunshine",
      "url": "https://via.placeholder.com/600/771796",
      "thumbnailUrl": "https://via.placeholder.com/150/771796"
    }
  ]
}

Du kommer att se att alla återstående foton-medlemmar är kvar, eftersom de i titeln har en del av ordet sun

Jag vet inte ens hur jag ska börja, jag vet att jag kan göra fynd, men jag behöver bara söka en del av ordet, inte hela ordet? Det kan inte bara vara det sista medlemmen i arrayen, arrayen är mycket större :(

Svar #1

Du kan använda filter() på photos.photos och kontrollera om title innehåller 'sun' med includes()

const photos = { "albumId": "1", "title": "quidem molestiae enim", "created": "1", "photos": [ { "id": "1", "title": "sunset", "url": "https://via.placeholder.com/600/92c952", "thumbnailUrl": "https://via.placeholder.com/150/92c952" }, { "id": "2", "title": "today is sunshine", "url": "https://via.placeholder.com/600/771796", "thumbnailUrl": "https://via.placeholder.com/150/771796" }, { "id": "3", "title": "test", "url": "https://via.placeholder.com/600/24f355", "thumbnailUrl": "https://via.placeholder.com/150/24f355" } ] }
let str = "sun"
photos.photos = photos.photos.filter(x => x.title.includes(str))
console.log(photos)