Как я могу сделать пирамиду на основе алфавита?

1

Итак, как я могу умножить буквы алфавита? Я использую массив со строками, и я хочу умножить их по индексу.

A
BB
CCC
DDDD
EEEEE 

и т.п.

<script>
    window.onload = start;
    var letters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", 
                   "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
    var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 
                   21, 22, 23, 24, 25, 26];

    function start() {
        document.getElementById("randomize").onclick = execute;
    }

    function execute() {
        for (var i = 0; i < letters.length; i++) {
            for (var j = 0; j <= numbers.length; j++) {
                var product = numbers.length * letters[i];
                document.getElementById("output").innerHTML += "<li>" + letters[i] + "</li>";
            }
        }
    }
</script>
  • 0
    А какая у тебя проблема?
  • 0
    String.prototype.repeat и Array.prototype.map
Показать ещё 5 комментариев
Теги:

3 ответа

2
Лучший ответ

Вы сделали почти все идеально, за исключением того, что вам нужно получить значение numbers[i] а не длину.

window.onload = start;

var letters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", 
               "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];

var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
               21, 22, 23, 24, 25, 26];

function start() {
  document.getElementById("randomize").onclick = execute;
}


function execute() {
  for (var i = 0; i < letters.length; i++) {
    var product = "";
    for (var j = 0; j < numbers[i]; j++)
      product += letters[i];
    document.getElementById("output").innerHTML += "<li>" + product + "</li>";
  }
}
li {font-family: 'Consolas', monospace;}
<button id="randomize">Randomize</button>
<div id="output"></div>
  • 2
    j < numbers[i] или начинайте с j = 1 , тогда это "идеально" :)
  • 0
    @xander Спасибо. Я обновляю. Спасибо вам большое!
5
for(var i = 0; i < 26; i++){
    console.log(String.fromCharCode(65 + i).repeat(i + 1));
}

дает тебе

A
BB
CCC
...

Еще короче:

var i = 0;
while(i++ < 26) console.log(String.fromCharCode(64 + i).repeat(i));
0

в oneliner (иногда):

document.getElementById("output").innerHTML = "<li>" + 
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("").map(
         x => "".padStart(x.charCodeAt(0) - "A".charCodeAt(0) + 1, x)
    ).join("</li>\n<li>") + "</li>"

Куда:

  • "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("") создает массив из строки
  • x => "".padStart(x.charCodeAt(0) - "A".charCodeAt(0) + 1, x) создает строку для символа x
  • padStart создать строку с требуемой длиной
  • длина основана на его позиции в алфавите x.charCodeAt(0) - "A".charCodeAt(0) + 1 см. String.charCodeAt
  • внешнее соединение создает список с вычисленными строками

Ещё вопросы

Сообщество Overcoder
Наверх
Меню