Как решить такую задачу с помощью цикла for?
Допустим, выведены единица и все двойки: 1, 2, 2 - всего 1 + 2 = 3 числа. А если единица, двойки и все тройки: 1, 2, 2, 3, 3, 3 - всего 1 + 2 + 3 = 6 чисел. Если добавить четвёрки: 1 + 2 + 3 + 4 = 10 чисел. Ну и так далее - это сумма арифметической прогрессии. Если текущее значение счётчика цикла равно сумме натуральных чисел от 1 до текущего выводимого - начинаем выводить следующее число:const N = чему-то там равно;

for (let i = 1, num = 1; i <= N; i++) {
  console.log(num);
  if (i === (1 + num) * num / 2) {
    num++;
  }
}
UPD. Можно пойти чуть дальше, и вспомнить про квадратные уравнения - в коде выше, в условном операторе, это вот оно. Известно значение счётчика - надо найти число. Так что нет проблем и формулу элемента последовательности вывести:for (let i = 1; i <= N; i++) {
  console.log(Math.ceil((Math.sqrt(1 + 8 * i) - 1) / 2));
}
Если не использовать формулы арифметических прогрессий:
Рекурсивная функция:function kn(n,k = 1) {
    for (let i = 1; (i <= k) && (n > 0); i++) {
        console.log(k);
        --n;
    }
    if (n > 0) return kn(n,++k);
}

kn(8); // для первых восьми чисел n
или без неё:n = 8;

for (let i = 1, k = 1; n > 0; i++) {
    console.log(k);
    --n;
    if (i == k) {
        k++;
        i = 0;
    }
}