Je dois créer une ligne sur deux avec des barres obliques et des barres obliques inverses. Je suis obligé d'utiliser plusieurs fonctions dans cet exercice. Voici un exemple: /////////// \\\\\\\\\\\ /////////// \\\\\\\\\\\ / ////////// \\ ...

2
tamzoro 17 mars 2021 à 02:02

4 réponses

Meilleure réponse

Remplacez console.log dans les fonctions partielles (slash() et antiSlash()) par return.

displayLine();

function slash(){
    var slash = "";
    for(var i=0; i<11; i++){
        slash += "/";
    }
    return slash;
}

function antiSlash(){
    var antiSlash = "";
    for(var i=0; i<11; i++){
        antiSlash += "\\";
    }
    return antiSlash;
}

function displayLine(){
    for(var i=0; i<6; i++){
        if(i % 2 === 0){
            console.log(slash());
        } else {
            console.log(antiSlash());
        }
    }
}
2
Martin Osusky 16 mars 2021 à 23:15

Peut-être une meilleure façon, certainement plus courte

console.log(
  Array.from(Array(6).keys()).map(v => (v % 2 === 0 ? '/' : '\\').repeat(11)).join('\n')
)

Je suis obligé d'utiliser plusieurs fonctions dans cet exercice.

const a = v => v.join('\n')
const c = v => Array.from(Array(v).keys())
const b = v => v.map(v => (v % 2 === 0 ? '/' : '\\').repeat(11))
console.log(
  a(b(c(6)))
)
0
Lawrence Cherone 16 mars 2021 à 23:29

slash et antislash ne renvoient rien, mais vous essayez de consigner ce qu'ils renvoient. Supprimez les console.log enveloppant les appels dans displayLine, c'est ce qui sort undefined.

Sinon, laissez-les et changez les fonctions appelées en return la chaîne construite au lieu de la log ing.

1
ShadowRanger 16 mars 2021 à 23:05

En effet, slash et antiSlash ne renvoient rien. Vous devez décider, est-ce que slash va retourner une chaîne que l'appelant imprime, ou est-ce que slash va faire l'impression et l'appelant ne fait rien? Un seul des deux doit appeler console.log.

1
Tim Roberts 16 mars 2021 à 23:04