Estoy tratando de resolver un desafío de jshero.net
Escriba una función add que agregue un elemento al final de una matriz. Sin embargo, el elemento solo debe agregarse si aún no está en la matriz.
Ejemplo: add([1, 2], 3)
debería devolver [1, 2, 3]
y add([1, 2], 2)
debería devolver [1, 2]
.
¿Por qué no funcionó este código?
function add(Sarray, nosarray) { if (Sarray.indexOf(nosarray) > -1) { return Sarray; } else { return Sarray.push(nosarray); }
pero devuelve el número 2
. No puedo entenderlo si .push(). El nuevo elemento se pasa como parámetro y se agrega al final de la matriz. ¿Por qué en mi código no funcionó?
Lea la referencia del método Array.prototype.push .
El método agrega un elemento al final de la matriz y devuelve la longitud de una matriz. Debe devolver la matriz en sí, no el resultado del método de inserción.
Sarray.push(nosarray); return Sarray;
Este es tu código:
function add (Sarray, nosarray) { if (Sarray.indexOf(nosarray) > -1) { return Sarray } else { return Sarray.push(nosarray) } }
La línea return Sarray.push(nosarray)
agregará el nosarray
como elemento a $array. Luego, devolverá la longitud de la matriz . Entonces, si asigna el resultado de la función a una variable, la variable será igual a 3 en su caso. Si desea que la función devuelva la matriz completa, solo tendría que ejecutar $array.push(nosarray)
y luego devolver $array después.