Je veux transformer un tableau de cette façon:

  • les fausses valeurs deviennent 0
  • les vraies valeurs deviennent 1
  • les valeurs nulles restent nulles

J'ai utilisé cette fonction:

var arr = [true, false, false, true, true, null, null, null, null];

var result = $.map(arr, function (val, i) {
            if (val == false) {
                return 0
            } else if (val == true) {
                return 1
            } else {
            return null
            }
        });

$("#result").text(result)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="result">
    
</div>

Cette fonction renvoie [1,0,0,1,1]; ....

Ce que je veux avoir = [1,0,0,1,1, null, null, null, null];

Une idée ? Merci

0
taboubim 8 mars 2016 à 05:21

3 réponses

Meilleure réponse

Selon la documentation jQuery $.map(), seules les valeurs de retour qui ne sont pas nulles ou non définies sont inclus dans le tableau résultant.

Utilisez la méthode native .map() de tableau natif à la place, car il va mettre des valeurs nulles dans le nouveau tableau.

(Les anciens IE ne prennent pas en charge la méthode array .map(), mais étant donné que vous utilisez jQuery 2.x, votre code ne prend pas en charge les anciens IE non plus.)

2
nnnnnn 8 mars 2016 à 02:34

Selon la documentation, $ .map supprime les valeurs nulles ...

Pour avoir des valeurs nulles, nous pouvons utiliser [null] à la place ...

var arr = [true, false, false, true, true, null, null, null, null];

var result = $.map(arr, function (val, i) {
            if (val == false) {
                return [0]
            } else if (val == true) {
                return [1]
            } else {
            return [null]
            }
        });
1
taboubim 8 mars 2016 à 02:37

Vous pouvez y parvenir très facilement en utilisant du javascript simple .map():

var arr = [true, false, false, true, true, null, null, null, null];

var result = arr.map(function (val, i) {
    if (val === false) {
        return 0;
    } else if (val === true) {
        return 1;
    } else {
        return null;
    }
});

console.log(result) // Array [ 1, 0, 0, 1, 1, null, null, null, null ]
1
baao 8 mars 2016 à 02:34