Je sais qu'il y avait beaucoup de sujets comme celui-ci. Et je connais les bases: .forEach()fonctionne sur le tableau d'origine et .map()sur le nouveau.
Dans mon cas:
function practice (i){
    return i+1;
};
var a = [ -1, 0, 1, 2, 3, 4, 5 ];
var b = [ 0 ];
var c = [ 0 ];
console.log(a);
b = a.forEach(practice);
console.log("=====");
console.log(a);
console.log(b);
c = a.map(practice);
console.log("=====");
console.log(a);
console.log(c);Et voici la sortie:
[ -1, 0, 1, 2, 3, 4, 5 ]
=====
[ -1, 0, 1, 2, 3, 4, 5 ]
undefined
=====
[ -1, 0, 1, 2, 3, 4, 5 ]
[ 0, 1, 2, 3, 4, 5, 6 ]Je ne comprends pas pourquoi utiliser practicechange la valeur de bà undefined. 
Je suis désolé si c'est une question idiote, mais je suis assez nouveau dans cette langue et les réponses que j'ai trouvées jusqu'à présent ne m'ont pas satisfait.
.maprenvoie un nouveau tableau , alors que.forEachne renvoie rien . Fondamentalement, si vous souhaitez obtenir une forme modifiée du tableau précédent, vous utilisez.map, si vous ne le souhaitez pas, vous utilisez.forEach.