Programing

"인수"에서 조각을 얻는 방법

lottogame 2020. 10. 21. 07:39
반응형

"인수"에서 조각을 얻는 방법


arguments함수에 전달 된 모든 인수를 보유하는 특수 객체 라는 것을 알고 있습니다.

그리고 그것이 배열이 아닌 한-당신은 같은 것을 사용할 수 없습니다 arguments.slice(1).

그래서 질문-첫 번째 요소를 제외한 모든 것을 슬라이스하는 방법은 arguments무엇입니까?

UPD :

배열로 변환하지 않고는 방법이없는 것 같습니다.

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

누군가가 다른 솔루션을 게시하면 좋을 것입니다. 그렇지 않다면 위의 줄을 대답으로 사용하여 첫 번째 솔루션을 확인하겠습니다.


배열 함수와의 간섭은 실제로 필요하지 않습니다.

나머지 매개 변수 구문을 사용하면 ...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");

...쉬다


Q. 첫 번째 요소를 제외한 모든 것을 슬라이스하는 방법은 arguments무엇입니까?

다음은 첫 번째 인수를 제외한 모든 인수를 포함하는 배열을 반환합니다.

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

arguments먼저 배열 로 변환 필요가 없으며 모든 작업을 한 번에 수행하십시오.


인수 객체를 절차 적으로 걸어 가면 "슬라이스없이 슬라이스"할 수 있습니다.

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]

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

JavaScript 엔진 (예 : V8)에서 최적화를 방지하기 때문에 인수를 분할해서는 안됩니다. 대신 arguments 객체를 반복하여 새 배열을 생성 해보십시오.

따라서 위의 Paul Rosiana의 대답은 정확합니다.


이것은 방법이 될 수 있습니다.

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

방법을 사용할 수 있습니다 [].slice.call(arguments, 1)

[] .slice 당신에게 슬라이스 함수 객체를 반환하고 당신이 그것을 호출 할 수 arguments1매개 변수는


함수 내에서 ... rest를 사용하여 첫 번째 인수와 나머지 인수를 구분할 수 있습니다.

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)

참고 URL : https://stackoverflow.com/questions/9510094/how-to-get-a-slice-from-arguments

반응형