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)