Как создать функцию, используя другую функцию для вывода столько строк, сколько символов в javascript? Пример: 4 строки по 4 "#". В основном, квадрат - PullRequest
0 голосов
/ 06 февраля 2020

Функции обучения в javascript. Сначала предлагается создать функцию с именем makeLine, а затем использовать функцию makeLine при создании функции makeSquare. Вот мой код для makeLine

function makeLine(size){
  for (let i = 0; i < size - 1; i++){
  hash= hash[i] + hash;
  }
    console.log(hash);
}

Я пытался заставить функцию makeSquare использовать функцию makeLine, и я могу заставить ее показывать 16 #, но только все в одной строке. Когда я пытаюсь использовать console.log и \ n, консоль выводит неопределенное значение.

function makeSquare(squareSides){
   makeLine(squareSides*squareSides);

}

makeSquare(4);

Вывод, который я пытаюсь достичь

####
####
####
####

Это просто скелет того, с чем я играл. Я пробовал миллион разных комбинаций, но это единственный способ получить правильное количество #. Я уверен, что это просто для любого опытного, но я столкнулся с кирпичной стеной, и все следующие упражнения зависят от понимания этого. Весь код, который я видел, относящийся к этому, немного выше моей головы и навыков, которые мы изучили до этого момента.

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Вот мое предложение для ваших makeLine() и makeSquare():

function makeLine (sideLength) {
  return '#'.repeat(sideLength);
}

function makeSquare (sideLength) {
  return Array(sideLength).fill(makeLine(sideLength)).join('\n');
}

console.log(makeSquare(16));

Примечание. Я использую Array(count) для создания массива count длины, затем я использую fill() для заполните его значением, а затем я использую join() для преобразования массива в строку, указав символ для объединения значений.

Альтернативой для makeSquare() является также использование repeat(). хотя вам понадобится символ \n и trim() для очистки последнего:

function makeSquare (sideLength) {
  const line = makeLine(sideLength) + '\n';
  return line.repeat(sideLength).trim()
}
0 голосов
/ 06 февраля 2020

Вы можете использовать метод String.prototype.repeat(), чтобы скопировать одну и ту же строку несколько раз, чтобы создать одну строку.

В makeSquare создать строки в al oop и добавить их в массив. Когда все строки в массиве используются Array.prototype.join(), чтобы превратить массив в строку с \n между ними.

const hash = '#';

function makeLine(size){
  return hash.repeat(size);
}

function makeSquare(size) {
  let lines = [];
  for (let i = 0; i < size; i++) {
    let line = makeLine(size);
    lines.push(line);
  }
  return lines.join('\n');
}

const square = makeSquare(4);

console.log(square);

Или вы можете сделать его действительно коротким, используя функции стрелок. Array(size) создаст пустой массив с заданным размером.

Вместе с Array.prototype.fill() вы можете заполнить этот пустой массив ключами. Ключи в этом случае являются результатом функции makeLine. Затем join('/n') результат вместе, и вы получите свой квадрат.

const makeLine = size => '#'.repeat(size);
const makeSquare = size => Array(size).fill(makeLine(size)).join('\n');

const square = makeSquare(4);
console.log(square);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...