Tengo un objeto de matriz llamado containertemps. Tiene un valor de propiedad llamado modDate.
Extraigo el valor booleano de la variable temperror comparando el tiempo en función del valor de la propiedad modDate entre varios objetos en containertemps.
Entonces, al colocar las variables de temperror 1, 2 y 3 en la variable de error, si alguna de ellas es verdadera, se representa el componente NotError, y cuando todas son falsas, se representa el componente Error.
Pero mirando mi código, esto parece ineficiente porque hay demasiados duplicados.
Como puedes ver, temperror0 y temperror1 y temperror2, El código que crea la variable está duplicado. ¿Cómo puedo deshacerme de estos valores duplicados en una pieza de código?
este es mi codigo
const containtemps = [
{
modDate:"2022-09-22T04:48:00.000Z"
},
{
modDate: null
},
{
modDate:"2022-09-22T04:5:00.000Z"
}
]
this is duplicated code
let curTime = new Date()
curTime.setHours(curTime.getHours() - 6)
const tempModate0 = containtemps[0]?.modDate;
let tempmodDate0 = new Date(tempModate0)
let temperror0 = curTime.getTime() <= tempmodDate0.getTime() ? false : true
const tempModate1 = containtemps[1]?.modDate;
let tempmodDate1 = new Date(tempModate1)
let temperror1 = curTime.getTime() <= tempmodDate1.getTime() ? false : true
const tempModate2 = containtemps[2]?.modDate;
let tempmodDate2 = new Date(tempModate2)
let temperror2 = curTime.getTime() <= tempmodDate2.getTime() ? false : true
const error =
temperror0 ||
temperror1 ||
temperror2 ;
;
return (
!error ?
(
<NotError>
notError
</NotError>
)
:
(
<Error>
error
</Error>)
)
Puede usar some función dentro de su matriz. Devolverá true si encuentra al menos un resultado que coincida con su expresión. Aquí necesitas la expresión opuesta >
const curTime = new Date();
const error = containtemps.some(t => t.modDate && curTime.getTime() > new Date(t.modDate).getTime())
Podría simplemente declarar una función auxiliar:
const checkTempDate = (tempDate) => {
const date = new Date(tempDate);
return curTime.getTime() <= date.getTime() ? false : true;
};
const error =
checkTempDate(containtemps[0]?.modDate) ||
checkTempDate(containtemps[1]?.modDate) ||
checkTempDate(containtemps[2]?.modDate);
return !error ? <NotError>notError</NotError> : <Error>error</Error>;