Как создать массив с такой последовательностью '1', '22', '333'? - PullRequest
0 голосов
/ 25 февраля 2020

Я хочу создать массив, подобный ['1', '22', '333'].
Но все, чего я достиг, - это массив [1, 2, 2, 3, 3, 3].

Что я делаю не так?

function createArr() {
    let quantity = 3
    let result = []
    for (let i = 1; i <= quantity; i++) {
        for (let j = 1; j <= i; j++) {
            result.push(i)
        }
    }
    alert(result)
}

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Однострочное решение с современным синтаксисом


Вы можете достичь своей цели, используя метод Array.from(), который заполнит массив нужной длины элементом- индексы (плюс один) String.prototype.repeat() 'ed item-index (плюс один) раз:

const createArr = n => Array.from({length:n}, (_,i) => `${i+1}`.repeat(i+1))

Ниже приведена краткая демонстрация:

createArr = n => Array.from({length:n}, (_,i) => `${i+1}`.repeat(i+1))

console.log(JSON.stringify(createArr(3)))
.as-console-wrapper{min-height:100%;}
0 голосов
/ 25 февраля 2020

Если ваша цель - создать ['1', '22', '333']

function createArr() {
                let quantity = 3
                let result = []
                for (let i = 1; i <= quantity; i++) {
                    let res;
                    for (let j = 1; j <= i; j++) {
                        res += `${j}`;
                    }
                    result.push(res);
                }
                alert(result)
}

Другая альтернатива (на основе предложения @ Эми)

function createArr() {
                let quantity = 3
                let result = []
                for (let i = 1; i <= quantity; i++) {
                    result.push(i.toString().repeat(i));
                }
                alert(result)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...