Entonces, tengo clientes que estoy iterando, luego cada cliente tiene algunos vehículos como una matriz representada en cadenas. Lo que quiero hacer es iterar los clientes y verificar si una identificación específica está incluida en alguna de las claves .vehicles, pero No obtengo los resultados deseados, verifique mi función:
const v = clients.clients.filter((c) => { if (c.vehicles.includes(fields.customer) === true) return c; });Lo estás haciendo más complicado de lo necesario. Debe devolver verdadero o falso dentro del filtro, por lo que:
const v = clients.clients.filter((c) => c.vehicles.includes(fields.customer) );Luego tienes una lista de clientes que tienen tus valores. Por fin, probablemente use un mapa para obtener una matriz con los resultados deseados.
Supongo que quieres tener todos los vehículos, así que la siguiente línea es:
let vehicles = v.map(c => c.vehicles)Una devolución de llamada de filtro de matriz debe devolver un booleano, no el elemento en sí
Puedes probar de esta manera
const v = clients.clients.filter((c) => c.vehicles.includes(fields.customer));No necesita poner una nueva condición if en su filtro. La función de devolución de llamada de filtro toma la condición de validación directamente
const result = words.filter(word => word.length > 6) ;Como puede ver arriba (cf mdn ), el método de filtro devolverá una nueva matriz con solo palabras que tengan más de 6 letras.
Entonces, en su caso, su función debería ser solo
const v = clients.clients.filter(c => c.vehicles.includes(fields.customer)) ; Además, creo que debe tener cuidado con el nombre de la clave, aquí tiene una clave de clientes en un objeto que tiene el mismo nombre, no es realmente comprensible, tal vez pueda tener carFleet.clients .