Aquí está mi solicitud POST:
router.post('/', (req, res) => { let body = { ...req.body }; let odd = new Array(); let even = new Array(); let is_success = true; body.array.forEach((element) => { if (Number.isInteger(element)) { if (element % 2 == 0) { even.push(element); } else { odd.push(element); } } else { is_success = false; return; } }); if (is_success) { res.status(200).json({ is_success: `${is_success}`, user_id: 'john_doe_17091999', odd: `${odd}`, even: `${even}`, }); } else res.status(200).json({ is_success: `${is_success}`, user_id: 'john_doe_17091999', }); });La condición is_success no se está volviendo verdadera y eso lo lleva a la condición else siempre. Lo que intento hacer es tomar la matriz y devolver matrices pares e impares si todos los elementos de entrada son enteros:
{ "array": ["1", "2", "3"] }Respuesta:
{ "successful": true, "odd": [1, 3], "even": [2], }Lo que siempre está respondiendo con:
{ "is_success": "false", "user_id": "john_doe_17091999" }Su matriz contiene cadenas. Debe convertirlos en números antes de poder ejecutar Number.isInteger() en ellos; de lo contrario, siempre devolverá 'falso'. Puede hacerlo poniendo un '+' antes del elemento. Vea abajo.
Number.isInteger(+element)
Debe convertir todos los elementos en Number antes de usar Number.isInteger; de lo contrario, obtendrá falso.
Ejemplo: Number.isInteger("2") devolverá falso Number.isInteger(Number("2")) devolverá verdadero