Создать массив в js с группами одинаковых чисел [1, 1, 2, 2, 3, 3]
Подскажите, как можно создать массив, который будет выводить нечто подобное: То есть, каждая цифра по n раз.
[1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4]
В данном случае, каждая цифра отображена по 5 раз.
Я попробовал комбинировать циклы for, while, но пока не удалось. Это просто стартовый массив. В качестве теста взято число 50. По итогу должно быть пять единиц, потом пять двоек, потом пять троек и тд, пока их общее число не будет 50
const createArray = (n) => {
const myArray = []
for (let i = 0; i <= n; i++) {
myArray[i] = i + 1;
}
console.log(myArray)
}
createArray(50)
Ответы (3 шт):
Автор решения: Евгений Колмак
→ Ссылка
const createArray = (n) => {
const myArray = [];
let step = 0;
for (let i = 0; i < n; i++) {
if (i % 5 === 0) {
step++
}
myArray.push(step);
}
console.log(myArray);
}
createArray(50)
Автор решения: EzioMercer
→ Ссылка
Будет лучше, если ф-ия будет возвращать массив, а потом уже выводить его где надо:
const createArray = (n, repeatNum = 5) => {
const myArray = [];
let num = 1;
while (myArray.length < n) {
myArray.push(num);
if (myArray.length % repeatNum === 0) ++num;
}
return myArray;
}
const createdArray = createArray(52);
console.log(createdArray);
Ответ на вопрос из комментария:
const createArray = (n, repeatNum = 5) => {
const myArray = [];
let num = 0;
while (myArray.length < n) {
myArray.push(++num);
if (myArray.length % repeatNum === 0) num = 0;
}
return myArray;
}
const createdArray = createArray(52, 4);
console.log(createdArray);
Автор решения: Artem Gorlachev
→ Ссылка
const createArray = (n) => [1, 2, 3, 4, 6, 3].map(i => new Array(n).fill(i)).flat()
console.log(createArray(5))
const createArray = n => new Array(n).fill().map((_, i) => Math.floor(i/5));
console.log(createArray(50));