hola necesito ayuda con array, como puedes ver mis datos
{ "age" : "18", "altKategoriler" : [ "Dramalar" ], "category" : [ "Aksiyon", "Heyecanlı", "Gerilim" ], "id" : 5240718100, "img" : "https://i.ibb.co/k8wx5C8/AAAABW9-ZJQOg-MRljz-Zwe30-JZw-Hf4vq-ERHq6-HMva5-ODHln-Ci-OEV6ir-Rcjt88tcnm-QGQCKpr-K9h-Oll-Ln-Sbb-EI.jpg", "izlenilmeSayisi" : 0, "logo" : "https://i.ibb.co/Rb2SrcB/AAAABfcrhh-Rni-Ok-Ct2l-Rys-ZYk-Oi-T0-XTeagkrw-Mkm-U0h-Lr-WIQZHEHg-VXihf-OWCwz-Vv-Qd7u-Ffn-DFZEX2-Ob.webp", "oyuncuKadrosu" : [ "Diego Luna", "Michael Pena", "Scoot McNairy", "Tenoch Huerta", "Joaquin Cosio" ], "senarist" : [ "Doug Miro" ], "time" : "3 Sezon", "title" : "Narcos: Mexico", "type" : "Dizi", "videoDescription" : "Guadalajara Karteli'nin yükselişinin gerçek öyküsünü anlatan bu yeni ve cesur Narcos hikâyesinde, Meksika'daki uyuşturucu savaşının 1980'lerdeki doğuşuna tanıklık edin.", "videoQuality" : "HD", "videosrc" : "https://tr.vid.web.acsta.net/uk/medias/nmedia/90/18/10/18/19/19550785_hd_013.mp4", "year" : "2021", "yonetmen" : [ "Carlo Bernard", "Chris Brancato" ] }Puedo acceder a elementos como id, title o logo porque no son matrices.
¿Cómo puedo recorrer los datos dentro de la matriz ya que hay una matriz en la categoría en rendimiento?
var data = this.database.filter((item) => item.type == searchType) var data = this.database.filter((item) => item.category == searchCategory)Está bien porque mi valor de tipo no tiene una matriz.
Pero cuando ingreso el valor de mi categoría, solo obtiene el primer índice [0]. No mira otros índices.
en resumen, item.category[0] , item.category[1] , item.category[2]...........
¿Cómo puedo obtener una navegación de índice como
si sus datos se ven así:
let data ={ "age" : "18", "altKategoriler" : [ "Dramalar" ], "category" : [ "Aksiyon", "Heyecanlı", "Gerilim" ], "id" : 5240718100, "img" : "https://i.ibb.co/k8wx5C8/AAAABW9-ZJQOg-MRljz-Zwe30-JZw-Hf4vq-ERHq6-HMva5-ODHln-Ci-OEV6ir-Rcjt88tcnm-QGQCKpr-K9h-Oll-Ln-Sbb-EI.jpg", "izlenilmeSayisi" : 0, "logo" : "https://i.ibb.co/Rb2SrcB/AAAABfcrhh-Rni-Ok-Ct2l-Rys-ZYk-Oi-T0-XTeagkrw-Mkm-U0h-Lr-WIQZHEHg-VXihf-OWCwz-Vv-Qd7u-Ffn-DFZEX2-Ob.webp", "oyuncuKadrosu" : [ "Diego Luna", "Michael Pena", "Scoot McNairy", "Tenoch Huerta", "Joaquin Cosio" ], "senarist" : [ "Doug Miro" ], "time" : "3 Sezon", "title" : "Narcos: Mexico", "type" : "Dizi", "videoDescription" : "Guadalajara Karteli'nin yükselişinin gerçek öyküsünü anlatan bu yeni ve cesur Narcos hikâyesinde, Meksika'daki uyuşturucu savaşının 1980'lerdeki doğuşuna tanıklık edin.", "videoQuality" : "HD", "videosrc" : "https://tr.vid.web.acsta.net/uk/medias/nmedia/90/18/10/18/19/19550785_hd_013.mp4", "year" : "2021", "yonetmen" : [ "Carlo Bernard", "Chris Brancato" ] }y si tenemos una matriz de datos, puede hacer algo como esto:
myArray.filter(item=>item.category.indexOf(searchCategory)>=0)pero si desea explorar en objeto en lugar de matriz, puede hacer esto:
data.category.indexOf(searchCategory)>=0Podría hacer esto un poco genérico, probando si el campo de destino es una matriz, usando Array.isArray , y luego llame a un filtro en cada elemento, y vea si alguno es positivo (usando .some() ). El filtro puede ser una función que se proporciona, de modo que pueda realizar una coincidencia simple, aplicar una expresión regular o cualquier otra cosa.
En lugar de probar con Array.isArray , puede omitir ese paso y verificar si el valor tiene un método .some() . Si es así, llamarlo dará el resultado deseado y, de lo contrario (usando los operadores .? y ?? ), el filtro debe aplicarse al valor como un todo:
Así es como se ve:
function applyFilter(data, field, filter) { return data.filter(item => item[field]?.some(filter) ?? filter(item)); } // Example use: var data = [{ "category" : [ "Action", "Thriller", "Horror"], "type" : "Series", }, { "category" : [ "Historical", "Romance" ], "type" : "Theatre", }]; // Find entries that have a category that looks like "roman*": var result = applyFilter(data, "category", value => /^roman.*/i.test(value)); console.log(result); Si está ejecutando una versión anterior de JavaScript y no tiene soporte para .? o ?? , luego usa:
return data.filter(item => Array.isArray(item[field]) ? item[field].some(filter) : filter(item));