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);
3 Réponses :
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');
}
}
sidenote: 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.
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);
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);
Tête à codereview.stackexchange.com