Подтвердить что ты не робот

Как получить фрагмент из "аргументов"

Все, что вы знаете, что arguments - это специальный объект, содержащий все аргументы, переданные функции.

И пока это не массив - вы не можете использовать что-то вроде arguments.slice(1).

Итак, вопрос - как разрезать все, кроме первого элемента из arguments?

UPD

похоже, что нет способа без преобразования его в массив с

var args = Array.prototype.slice.call(arguments);

Если кто-то опубликует другое решение, было бы здорово, если бы не было - я проверил бы первый с приведенной выше строкой в ​​качестве ответа.

4b9b3361

Ответ 1

Взаимодействие с функциями массива на самом деле не требуется.

Использование синтаксис параметра останова ...rest более чистый и более удобный.

Пример

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");

... Rest

Ответ 2

Q. Как отрезать все, кроме первого элемента, от arguments?

Далее будет возвращен массив, содержащий все аргументы, кроме первого:

var slicedArgs = Array.prototype.slice.call(arguments, 1);

Вам не нужно сначала преобразовывать arguments в массив, сделать все за один шаг.

Ответ 3

Из https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments:

Вы не должны нарезать аргументы, потому что это предотвращает оптимизацию в Двигатели JavaScript (например, V8). Вместо этого попробуйте построить новый массива, итерации через объект arguments.

Итак, ответ Пола Росяны выше правильно.

Ответ 4

Вы можете "разрезать без нарезки" путем процедурного перехода объекта аргументов:

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]

Ответ 5

Это может быть способ:

var args = Array.from(arguments).slice(1);

Ответ 6

Вы можете использовать метод [].slice.call(arguments, 1)

[]. slice вернет вам объект функции среза, и вы можете назвать его как arguments и 1 параметры

Ответ 7

Вы можете использовать... отдохнуть внутри функции, чтобы отделить первый и остальные аргументы:

function foo(arr) {
  const [first, ...rest] = arguments;
  console.log('first = ${first}');
  console.log('rest = ${rest}');
}
//Then calling the function with 3 arguments:
foo(1,2,3)