[javascript] <something> N 번 수행 (선언 구문)

Javascript에 다음과 같이 쉽게 작성할 수있는 방법이 있습니까?

[1,2,3].times do {
  something();
}

유사한 구문을 지원할 수있는 라이브러리가 있습니까?

업데이트 : 명확히하기 위해- something()각 배열 요소 반복에 대해 각각 1,2 및 3 번 호출하고 싶습니다.



답변

이 답변은 Array.forEach라이브러리없이 네이티브 바닐라를 기반으로 합니다.

기본적으로 something()3 번 전화하려면 다음을 사용하세요.

[1,2,3].forEach(function(i) {
  something();
});

다음 기능을 고려하십시오.

function something(){ console.log('something') }

아웃 파우 트는

something
something
something

이 질문을 완료하려면 something()각각 1 번, 2 번, 3 번 전화하는 방법이 있습니다.

2017 년, ES6를 사용할 수 있습니다.

[1,2,3].forEach(i => Array(i).fill(i).forEach(_ => {
  something()
}))

또는 좋은 오래된 ES5에서 :

[1,2,3].forEach(function(i) {
  Array(i).fill(i).forEach(function() {
    something()
  })
}))

두 경우 모두 아웃 파우 트는

아웃 파우 트는

something

something
something

something
something
something

(1 회, 2 회, 3 회)


답변

루프를 사용하십시오.

var times = 10;
for(var i=0; i < times; i++){
    doSomething();
}


답변

가능한 ES6 대안.

Array.from(Array(3)).forEach((x, i) => {
  something();
});

그리고 “각각 1,2 및 3 번 호출”을 원할 경우.

Array.from(Array(3)).forEach((x, i) => {
  Array.from(Array(i+1)).forEach((x, i2) => {
    console.log(`Something ${ i } ${ i2 }`)
  });
});

최신 정보:

정의되지 않은 채우기 배열 에서 가져옴

이것은 초기 배열을 만드는 더 최적화 된 방법 인 것 같습니다. 또한 @ felix-eve가 제안한 두 번째 매개 변수 맵 기능을 사용하도록 업데이트했습니다.

Array.from({ length: 3 }, (x, i) => {
  something();
});


답변

밑줄을 언급 한 이후 :

f호출하려는 함수가 다음과 같다고 가정 합니다.

_.each([1,2,3], function (n) { _.times(n, f) });

트릭을 할 것입니다. 예를 들어를 사용 f = function (x) { console.log(x); }하면 콘솔이 표시됩니다.
0 0 1 0 1 2


답변

lodash 와 함께 :

_.each([1, 2, 3], (item) => {
   doSomeThing(item);
});

//Or:
_.each([1, 2, 3], doSomeThing);

또는 무언가를 N 번 하고 싶다면 :

const N = 10;
_.times(N, () => {
   doSomeThing();
});

//Or shorter:
_.times(N, doSomeThing);

참조 링크 에 대한 lodash설치


답변

이렇게 방법으로 배열 및 fill모든 항목을 만들 수 있습니다.undefinedmap

Array.fill IE를 지원하지 않습니다

// run 5 times:
Array(5).fill().map((item, i)=>{
   console.log(i) // print index
})

위의 내용을 좀 더 “허용”하고 싶다면 현재 내 의견 기반 솔루션은 다음과 같습니다.


구식 (역방향) 루프 사용 :

// run 5 times:
for( let i=5; i--; )
   console.log(i) 

또는 선언적 “while” :


답변

다음과 같이 디스트 럭처링으로 동일한 작업을 수행 할 수도 있습니다.

[...Array(3)].forEach( _ => console.log('do something'));

또는 색인이 필요한 경우

[...Array(3)].forEach(( _, index) => console.log('do something'));