Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

array.filter

4 réponses
Avatar
G-Raph
Bonjour,

Il me semble, mais peut-=EAtre ai-je manqu=E9 un =E9pisode, que cette
m=E9thode 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 =3D=3D 0 || index =3D=3D 0)
return el;
});

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

ou est pass=E9 mon "0" ?

En gros, je souhaite r=E9cup=E9rer une valeur sur deux...

M=EAme :

[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 !

4 réponses

Avatar
Laurent vilday
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
Avatar
G-Raph
Impeccable, merci beaucoup !
Avatar
Bruno Desthuilliers
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)
Avatar
G-Raph
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ù...