2017-09-24 7 views
0

Pour mon programme, je dois doubler les nombres du tableau dans une position impaire et ensuite, si ce nombre est supérieur à 9, soustraire 9 à lui. Si je devais le faire avec un nombre impair, je pourrais facilement le faire avec le code suivant (numéro est le nom du tableau):Comment puis-je voir en Javascript si l'élément d'un tableau est dans une position impaire ou dans une position paire?

for (var k = 0; k < Numero.length;k++) { 
    if ((Numero[k] % 2) != 0) { 
     var doppioNumero = Numero[k] * 2; 
     Numero[k] = doppioNumero; 
     if (Numero[k] > 9) { 
      var nuovoNum = Numero[k] - 9; 
      Numero[k] = nuovoNum; 
     } 
    } 
} 

Le problème est que je n'ai pas de le faire sur un nombre impair, Je dois le faire sur des nombres dans des positions impaires, comme le premier nombre, le troisième, le cinquième, le septième, le neuvième et ainsi de suite. Comment puis-je le faire? Merci beaucoup.

+2

'pour (var i = 1; i Ammar

+0

simplement le faire sur ** k ** puisque c'est la position et plus précisément k + 1 –

+0

Que voulez-vous dire par" positions impaires "? Quels sont les index numériques spécifiques à définir? Par "premier chiffre" voulez-vous dire "0" ou "1"? Qu'est-ce qu'un tableau d'entrée et un résultat attendu? Voir https://stackoverflow.com/help/mcve – guest271314

Répondre

1

Vous pouvez modifier votre code pour

for (var k = 0; k < Numero.length;k++) { 
    if ((k+1)&1) { 
     var doppioNumero = Numero[k] * 2; 
     Numero[k] = doppioNumero; 
     if (Numero[k] > 9) { 
      var nuovoNum = Numero[k] - 9; 
      Numero[k] = nuovoNum; 
     } 
    } 
} 

qui vérifierait à des positions impaires

+0

je dirais k + 1 –

+0

vous avez raison, corrigé – marvel308

+0

Pouvez-vous m'expliquer s'il vous plaît quoi et exactement et comment vous l'avez utilisé dans votre réponse? La documentation n'est pas très utile. –

2

faire simplement ceci:

for (var k = 0; k < Numero.length;k+=2) { 
     var doppioNumero = Numero[k] * 2; 
     Numero[k] = doppioNumero; 
     if (Numero[k] > 9) { 
      var nuovoNum = Numero[k] - 9; 
      Numero[k] = nuovoNum; 
     } 
} 

incrément la valeur de k par 2 et vous obtiendrez seulement positions impaires.

Vous pouvez remarquer que k = 0 signifie la première position de

+0

en utilisant K + = 2 a augmenter les performances ... +1 –

0

Pour vérifier les positions impaires, il vous suffit de vérifier la valeur de k (modulo) 2:

for (var k = 0; k < Numero.length;k++) { 
    if (k % 2) != 0) { 
     var doppioNumero = Numero[k] * 2; 
     Numero[k] = doppioNumero; 
     if (Numero[k] > 9) { 
      var nuovoNum = Numero[k] - 9; 
      Numero[k] = nuovoNum; 
     } 
    } 
} 
0
for (var i = 0; i < Numero.length; i += 2) { 
    Numero[i] = (Numero[i] * 2) % 9; 
} 
+0

nous devrions commencer par 0 pas 1 ... 0 est la première position –

+0

Ah, c'est exact, Je vais le corriger – Ammar

+1

@TemaniAfif pour le nombre impair il doit commencer à partir de 1 – Slai

0

Vous pouvez utiliser la carte au lieu d'une boucle for

Numero.forEach((v, k, arr)=>{ 
    if(k%2==1) arr[k]=arr[k]*2 % 9; 
}); 
+0

si le nombre dans le s'il vous plaît expliquer la logique derrière arr [k] * 2 % 9 ... disons que le nombre est 18 ... la réponse devrait être 18-9 = 9 ... mais l'équation donne 0. la question dit si le nombre est supérieur à 9, le soustraire par 9 .. . –