ejemplos - javascript html
Cómo obtener una porción de "argumentos" (6)
Desde here :
No debe cortar los argumentos porque previene las optimizaciones en los motores de JavaScript (V8, por ejemplo). En su lugar, intente construir una nueva matriz iterando a través del objeto arguments.
Entonces, la respuesta de Paul Rosiana es correcta
Todo lo que sabes que los arguments
es un objeto especial que contiene todos los argumentos pasados a la función.
Y mientras no sea una matriz, no puede usar algo como arguments.slice(1)
.
Entonces la pregunta: ¿cómo cortar todo pero primer elemento de los arguments
?
UPD :
parece que no hay forma de hacerlo sin convertirlo en una matriz con
var args = Array.prototype.slice.call(arguments);
Si alguien publica otra solución sería genial, si no, verifico la primera con la línea de arriba como respuesta.
Esto puede ser una forma:
var args = Array.from(arguments).slice(1);
Puede "rebanar sin cortar" recorriendo procesalmente el objeto de argumentos:
function fun() {
var args = [];
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
return args;
}
fun(1, 2, 3, 4, 5); //=> [2, 3, 4, 5]
Puedes usar el método [].slice.call(arguments, 1)
[] .slice le devolverá el objeto de función de corte y puede llamarlo como arguments
y 1
son los parámetros
Inmiscuirse con funciones de matriz no es realmente necesario.
Usando la sintaxis del parámetro de descanso ...rest
es más limpio y más conveniente.
Ejemplo
function argumentTest(first, ...rest) {
console.log("First arg:" + first);
// loop through the rest of the parameters
for(let arg of rest){
console.log("- " + arg);
}
}
// call your function with any number of arguments
argumentTest("first arg", "#2", "more arguments", "this is not an argument but a contradiction");
...Descanso
- Ver el ejemplo Fiddle
- Ver la página de documentación de MDN
P. ¿Cómo cortar todo pero primer elemento de los arguments
?
Lo siguiente devolverá una matriz que contiene todos los argumentos excepto el primero:
var slicedArgs = Array.prototype.slice.call(arguments, 1);
No tiene que convertir arguments
a una matriz primero, hágalo todo en un solo paso.