55 votes

Comment aplatir le tableau en jQuery?

Comment simplement aplatir tableau en jQuery? J'ai:

[1, 2, [3, 4], [5, 6], 7]

Et je veux:

[1, 2, 3, 4, 5, 6, 7]

62voto

MarioRicalde Points 3701

Vous pouvez utiliser jQuery.la carte, qui est la voie à suivre si vous avez de la Bibliothèque jQuery est déjà chargé.

$.map( [1, 2, [3, 4], [5, 6], 7], function(n){
   return n;
});

Retourne

[1, 2, 3, 4, 5, 6, 7]

35voto

bjornd Points 11457

Utiliser la puissance de JavaScript:

var a = [[1, 2], 3, [4, 5]];

console.log( Array.prototype.concat.apply([], a) );
//will output [1, 2, 3, 4, 5]

25voto

Xavi Points 9768

Voici comment vous pouvez utiliser jquery pour aplatir profondément tableaux imbriqués:

$.map([1, 2, [3, 4], [5, [6, [7, 8]]]], function recurs(n) {
    return ($.isArray(n) ? $.map(n, recurs): n);
});

Retourne:

[1, 2, 3, 4, 5, 6, 7, 8]

Profite de jQuery.la carte ainsi que jQuery.isArray.

11voto

dnuttle Points 1746
var a = [1, 2, [3, 4], [5, [6, [7, 8]]]];
var b = [];

function flatten(e,b){
    if(typeof e.length != "undefined")
    {
        for (var i=0;i<e.length;i++)
        {
            flatten(e[i],b);
        }
    }
    else
    {
        b.push(e);
    }
}
flatten(a,b);
console.log(b);

La mise à plat de la fonction doit le faire, et cela ne nécessite pas de jQuery. Il suffit de copier tout cela dans Firebug et de l'exécuter.

4voto

Sarfraz Points 168484

Vous pouvez utiliser jQuery.map():

rappel( valeur, indexOrKey )La fonction de chaque élément du processus de contre. Le premier argument de la fonction est la valeur; la deuxième l'argument est l'indice ou de la clé d'la baie ou la propriété de l'objet. L' la fonction peut renvoyer une valeur à ajouter à l'éventail. Un tableau retourné seront aplatis dans le tableau résultant. Au sein de la fonction, ce se réfère à la global (de la fenêtre) de l'objet.

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