0
votes

Bonjour ! Confusion dans l'état de l'état de l'if d'autre de la fonction additem. Quelqu'un peut-il suggérer un code de nettoyage?

Ce code s'est senti un peu délicat, mais ma confusion est principalement dans la partie Ifelse de la fonction additem. Je ne suis pas en mesure de comprendre la déclaration Ifelse dans laquelle j'ai passé une fonction checkduplicate comme une condition et de comprendre les paramètres qui lui sont transmis.

     let toDoList = [];

    function addItem(arr)
    {   
        let userAns = prompt('What will you do today ?');

        let formatted = userAns.toUpperCase();

        if(checkDuplicates(arr, formatted))   // Confusion started here
        {
            arr.push(formatted);
        }

        else
        {
            prompt('Item already exists');
        }

    }

    function checkDuplicates(arr1, arrElem)
    {
        let elemExists = false;

        let index = arr1.indexOf(arrElem);

        if(index === -1)
        {
            elemExists = true;
        }

        else
        {
            elemExists = false;
        }

        return elemExists;
    }

    addItem(toDoList);

    addItem(toDoList);

    addItem(toDoList);

    addItem(toDoList);

    console.log(toDoList);


1 commentaires

3 Réponses :


0
votes

appeler une fonction personnalisée à 11 lignes semble un peu inutile lorsque vous pouvez obtenir la même chose avec un simple .Inclut le test code> (une fonction intégrée pour vérifier si un tableau comprend un article):

let toDoList = [];
function addItem(arr) {
  let userAns = prompt('What will you do today ?');
  let formatted = userAns.toUpperCase();
  if (!arr.includes(formatted))  {
    arr.push(formatted);
  } else {
    prompt('Item already exists');
  }
}


0 commentaires

0
votes

checkduplicates code> vérifie que le code code> contient code> contient déjà code> déjà, si oui il renvoie false code> sinon il renvoie vrai code>. Dans ce cas, le si code> branche est exécuté et formaté code> est punch à arr code>. Par conséquent, il ne va pas ajouter des doublons.


sidenote: checkduplicates code> est un non-vecessaire, il y a une intégrée pour cela: p>

 // read as "if arr not includes formatted"
 if(!arr.includes(formatted))
    arr.push(formatted);


0 commentaires

0
votes
  • Vous n'avez pas besoin de la fonction checkduplicates () code> li>
  • Ne faites pas d'autre variable formaté code> juste appliquer .Touppercase () code> à invite (...) code> li>
  • au lieu de if-ele code> utiliser des opérateurs ternaires li>
  • Utilisez une boucle pour appeler la fonction additem code> li>
  • Utilisez Inclut () code> au lieu de indexof () code> li>

    p>

        let toDoList = [];
    
        function addItem(arr)
        {   
            let userAns = prompt('What will you do today ?').toUpperCase();
            !arr.includes(userAns) ? arr.push(userAns) :   prompt('Item already exists')
        }
        for(let i = 0;i<4;i++) addItem(toDoList);
        console.log(toDoList);

0 commentaires