Поиск частей массива по частям в некотором свойстве

#javascript #typescript

#javascript #typescript

Вопрос:

У меня есть такой объект в 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"
    }
  ]
}
  

Мне нужно вытолкнуть все значения, которые не найдены в строке, поиск выполняется в фотографиях.фотографии.заголовок.
Вот пример, допустим, у меня есть такая строка

 const searchText = 'sun';
  

Мне нужно просмотреть внутренние фотографии.photos.title и удалите все фотографии.фотографии, которые не содержат части этого слова.Мои новые фотографии должны выглядеть так

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

Вы увидите, что элемент all remaining photos оставлен, потому что в названии у них есть часть слова sun

Я даже не знаю, с чего начать, я знаю, что могу найти, но мне нужно искать только часть слова, а не все слово целиком? Это может быть не просто последний член массива, массив намного больше : (

Ответ №1:

Вы можете использовать filter() on photos.photos и проверить, title содержит ли 'sun' он using 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)