From 448ca0d0fe446bb868d6f6c72c4f7760d3b0e018 Mon Sep 17 00:00:00 2001 From: rick Date: Wed, 24 Mar 2021 21:45:51 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20deuxi=C3=A8me=20partie=20et=20doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jour12/jour12.js | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/jour12/jour12.js b/jour12/jour12.js index d1b56f6..7f013c4 100644 --- a/jour12/jour12.js +++ b/jour12/jour12.js @@ -5,6 +5,8 @@ try { const data = JSON.parse(file); console.log("Traitement de la première partie…"); console.log("La somme totale est " + parseJsonPrem(data)); + console.log("Traitement de la deuxième partie…"); + console.log("La somme totale est " + parseJsonDeux(data)); } catch(err) { console.log("Une erreur a été rencontrée !"); console.error(err); @@ -32,21 +34,31 @@ function parseJsonPrem(obj) { return ret; } -/* -function parseObject(objet) { +/** + * Fonction additionnant tous les nombres contenus dans un objet + * sauf ceux qui ont une propriété "red". Règle ne s’appliquant pas + * aux Array (toujours une addition complète) + * + * @param Object obj - Object où se trouve des nombres + * @return int la somme totale + */ +function parseJsonDeux(obj) { let ret = 0; let value; + // c’est plus jolie d’avoir une variable dédiée plutot que bourrer le if + let isObj = !(obj instanceof Array) && obj instanceof Object; + for (const index in obj) { value = obj[index]; - if (value instanceof Array) { - ret += parseArray(value); - } else if (value instanceof Object) { - ret += parseObject(value); + if (value instanceof Object) { + ret += parseJsonDeux(value); } else if (Number.isInteger(value)) { ret += value; + } else if (isObj && value === "red") { + ret = 0; + break; } } return ret; } -*/