167 votes

Pourquoi la fonction map de JavaScript retourne-t-elle indéfinie ?

Mon code

 var arr = ['a','b',1];
 var results = arr.map(function(item){
                if(typeof item ==='string'){return item;}  
               });

Cela donne les résultats suivants

["a","b",undefined]

Je ne veux pas undefined dans le tableau des résultats. Comment puis-je le faire ?

11voto

Fatih Bulut Points 197

Si vous devez utiliser map pour renvoyer une sortie personnalisée, vous pouvez toujours la combiner avec filter.

const arr = ['a','b',1]

const result = arr.map(element => {

  if(typeof element === 'string')
    return element + ' something'

}).filter(Boolean) // this will filter out null and undefined

console.log(result) // output: ['a something', 'b something']

9voto

BenM Points 23070

Vous ne retournez une valeur que si l'élément courant est un string . Il suffira peut-être d'attribuer une chaîne vide :

var arr = ['a','b',1];
var results = arr.map(function(item){
    return (typeof item ==='string') ? item : '';  
});

Bien sûr, si vous voulez filtrer les éléments qui ne sont pas des chaînes de caractères, vous ne devriez pas utiliser map() . Vous devriez plutôt envisager d'utiliser le filter() fonction.

6voto

Prasath K Points 2112
var arr = ['a','b',1];
var results = arr.filter(function(item){
                if (typeof item ==='string') {return item;}  
               });

0voto

Si vous l'utilisez comme ça, votre problème sera résolu. De plus, vous aurez un code propre et court.

var _ = require('lodash'); //but first, npm i lodash --save
var arr = ['a','b',1];
var results = _.compact(
    _.map(arr, function(item){
        if(_.isString(item)){return item;}
    }
); //false, null, undefined ... etc will not be included

avec ES6...

const _ = require('lodash'); //but first, npm i lodash --save
const arr = ['a','b',1];
const results = _.compact(
    _.map(arr, item => {
        if(_.isString(item)){return item;}
    }
);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X