JavaScript - no puedo resolver este problema

 
Vista:

no puedo resolver este problema

Publicado por bbroscheit (1 intervención) el 15/01/2022 22:18:38
me plantearon el siguiente problema

function mapear() {
// Escribi una funcion mapear en el prototipo del objeto global 'Array'
// que recibe una funcion callback , que se ejecuta por cada elemento del array
// mapear los elementos de ese array segun la funcion callback
// Esta funcion tiene que devolver un array nuevo con los elementos mapeados.
// NO USAR LA FUNCION MAP DE ARRAYS.
// ej:
// var numeros = [1, 2, 3, 4];
// numeros.mapear(function(numero) {
// return numero + 1;
// }) devuelve [2, 3, 4, 5]

// Tu código aca:
let newArray = [];
Array.prototype.mapear = function (e) {
for (let i = 0; i < e.length; i++) {

newArray[i] = e[i];
}

return newArray;
};

}

en el programa que corre el test en la consola da estos datos

describe('mapear', function() {
mapear();
const numbers = [1, 2, 3, 4];
it('should map', function() {
expect(numbers.mapear(n => n * 2)).toEqual([2, 4, 6, 8]);
})
it('should map ok', function() {
expect(numbers.mapear(n => n + 5)).toEqual([6, 7, 8, 9]);
})
})

el problema es que mi codigo devuelve el array que piden pero agrega un valor undefined en la ultima posicion.
si lo quiero quitar con el metodo que sea me devuelve un array vacio ademas del array del resultado

me esta volviendo loco.

desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

no puedo resolver este problema

Publicado por Alejandro (532 intervenciones) el 20/01/2022 20:27:11
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
No entiendo tu código.
Esto hace lo que la descripción pide.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script>
	Array.prototype.mapear = function(callback){
		let output = [];
		for(let item of this){
			output.push(callback(item));
		}
		console.log(output);
		return output;
	}
 
	var numeros = [1, 2, 3, 4];
 
	numeros.mapear(function(numero){
		return numero + 1;
	});
</script>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar