조립 방법은 그룹에서 항목을 삭제하지 않습니다

질문:

나는 함수를 실현하려고 시도하고 있다. 이 함수는 세 개의 매개 변수(min,max,step)를 받아들이고 step를 사용하여 min에서 max까지의 일련의 정수를 생성한다.첫 번째 정수는 최소값, 두 번째는 범위의 최대값, 세 번째는 스텝 길이입니다.
다음은 어떤 모양을 보여야 하는지의 예입니다.
GeneratorAge(2,10,2)는 [2,4,6,8,10]의 그룹을 되돌려야 한다.
splice 방법을 사용하여 max 매개 변수보다 큰 기존 요소를 삭제하고 있습니다.
function generateRange(min, max, step) {
  var arr = [];
  var count = min;
  for (var i = 0; i < max / step; i++) {
    arr[i] = count;
    count = count + step;
    arr[i] > max ? arr.splice(i, 1) : arr[i];
  }
  return arr;
}

console.log(generateRange(2, 10, 2));
내가 console.log 나의 결과를 얻을 때마다 나는 마지막 항목 후에 쉼표를 한 무더기 얻는다...그래서 이렇게 보입니다. [2,4,6,8,10,]
이 항목들은 삭제되지 않은 것 같습니다.내가 뭘 놓쳤지?감사합니다!

답안

삼원 연산자는 표현식이 저장되지 않았기 때문에 좀 이상하다.그것은 너무 큰 값을 삭제해서 그룹을 복원합니다.이것은 한 번만 일했지만 두 번째가 있으면 i가 증가합니다. arr[i]에 분배를 통해 수조의 길이는 이전에 실행되지 않았던 것과 같습니다. (i-1 인덱스에 정의되지 않은 값을 제외하고는)
범위를 초과하는 값을 지정하기 전에 순환을 종료하는 것이 좋습니다.이런 상황에서 계속 순환하는 것은 무의미하다.
따라서 splice 변수를 순환 변수와 조건으로 삼는다.
function generateRange(min, max, step){
    var arr = [];
    for(var count = min; count <= max; count+=step){
        arr.push(count);
    }
    return arr;
}

var res = generateRange(2, 10, 2);

console.log(res);
가독성은 떨어지지만 ES6 버전은 다음과 같아야 합니다.
function generateRange(min, max, step){
    return Array.from(Array(Math.floor((max-min)/step)+1), (x,i) => min+i*step);
}

let res = generateRange(2, 10, 2);

console.log(res);