array.filter

Le
G-Raph
Bonjour,

Il me semble, mais peut-être ai-je manqué un épisode, que cette
méthode comporte un bug :

[0, 491, 1083, 1574, 2166, 2657, 3249, 3740, 4332, 4823, 5415, 5906,
6498, 6989, 7581].filter(function(el, index){
if(index % 2 == 0 || index == 0)
return el;
});

renvoie : [1574, 2166, 3740, 4332, 5906, 6498]

ou est passé mon "0" ?

En gros, je souhaite récupérer une valeur sur deux

Même :

[0, 491, 1083, 0, 0, 1574, 2166, 2657, 3249].filter(function(el,
index){
return el;
});

retourne : [491, 1083, 1574, 2166, 2657, 3249]


Y a-t-il un moyen de contourner cela ?

Merci d'avance !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Laurent vilday
Le #22252291
G-Raph :
Il me semble, mais peut-être ai-je manqué un épisode, que cette
méthode comporte un bug :

[0, 491, 1083, 1574, 2166, 2657, 3249, 3740, 4332, 4823, 5415, 5906,
6498, 6989, 7581].filter(function(el, index){
if(index % 2 == 0 || index == 0)
return el;
});

renvoie : [1574, 2166, 3740, 4332, 5906, 6498]
ou est passé mon "0" ?



La fonction en callback d'un filter doit retourner *true* ou *false*.
Puisque tu retournes "el", quand ce "el" est "0" tu retournes en fait
"false" donc tes zéros ne seront jamais dans ton résultat.

[
0, 491, 1083, 1574, 2166, 2657,
3249, 3740, 4332, 4823, 5415,
5906, 6498, 6989, 7581
].filter(function(el, index)
{
if ( index % 2 == 0 || index == 0 )
{
return true;
}
}
);

deviendra :

[0,1083,2166,3249,4332,5415,6498,7581]

--
laurent
G-Raph
Le #22252391
Impeccable, merci beaucoup !
Bruno Desthuilliers
Le #22253371
G-Raph a écrit :
Bonjour,

Il me semble, mais peut-être ai-je manqué un épisode, que cette
méthode comporte un bug :

[0, 491, 1083, 1574, 2166, 2657, 3249, 3740, 4332, 4823, 5415, 5906,
6498, 6989, 7581].filter(function(el, index){
if(index % 2 == 0 || index == 0)
return el;
});



Accessoirement, 0 % 2 == 0, donc le second test est redondant.

(snip le reste - pb résolu)
G-Raph
Le #22262611
On 14 juin, 10:30, Bruno Desthuilliers <bruno.
wrote:

Accessoirement, 0 % 2 == 0, donc le second test est redondant.



Effectivement, mais lorsque l'on a une erreur dont on ignore
l'origine, on est susceptible d'ajouter une batterie de tests, au cas
où...
Publicité
Poster une réponse
Anonyme