Aquí en lugar de find() lo que te vendría bien es usar el método findIndex() que devuelve el índice del primer elemento que se encuentre en el array. El funcioamiento es casi el mismo, pero consigues el índice numérico en tu array, que luego podrás usar para conseguir el elemento anterior.
Puedes escribir una función en JavaScript que itere a través del array y busque el índice del objeto que contiene el CityId
dado. Luego, según este índice, puedes determinar el CityId
del elemento anterior. Si no hay un elemento anterior.
mira este código a ver si te aclara algo:
function buscarCityIdAnterior(tabs, CityId) {
const indice = tabs.findIndex(tab => tab.CityId === CityId);
// Si no se encuentra el elemento, devolver null
if (indice === -1) return null;
// Si hay un elemento anterior, devolver su CityId
if (indice > 0) return tabs[indice - 1].CityId;
// Si no hay anterior pero hay un siguiente, devolver el siguiente
if (indice === 0 && tabs.length > 1) return tabs[1].CityId;
// Si no hay ni anterior ni siguiente, devolver null
return null;
}
// Ejemplo de uso:
const tabs = [
{ label: 'Conocimiento', CityId: 1 },
{ label: 'Crerere', CityId: 3 },
{ label: 'lalala', CityId: 66 },
];
console.log(buscarCityIdAnterior(tabs, 66)); // Debería devolver 3
console.log(buscarCityIdAnterior(tabs, 1)); // Debería devolver 3 ya que no hay anterior
console.log(buscarCityIdAnterior(tabs, 99)); // Debería devolver null ya que no existe ese CityId
Este código primero busca el índice del objeto que coincide con el CityId
proporcionado. Luego, usando este índice, intenta devolver el CityId
del elemento anterior. Si no hay un elemento anterior, verifica si hay un siguiente elemento para devolver. Si no hay un siguiente elemento, devuelve null
.
ya me cuentas qué te ha parecido.... creo que es un buen ejemplo para aprender a trabajar con arrays, así que seguramente le servirá a otras personas también... un abrazo y saludetes.