64 votes

Diviser le tableau en deux tableaux

var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var point = 'c';

Comment puis-je diviser le "arr" en deux tableaux en fonction de la variable "point", comme :

 ['a', 'b']

et

 ['d', 'e', 'f']

54voto

jandjorgensen Points 2984
var arr2 = ['a', 'b', 'c', 'd', 'e', 'f'];
arr = arr2.splice(0, arr2.indexOf('c'));

Pour supprimer 'c' de arr2 :

 arr2.splice(0,1);

arr contient les deux premiers éléments et arr2 contient les trois derniers.

Cela fait quelques hypothèses (comme arr2 contiendra toujours le «point» à la première affectation), ajoutez donc une vérification de l'exactitude pour les cas limites si nécessaire.

27voto

Juan Mendes Points 31678

Utiliser indexOf et slice

 var arr = ['a', 'b', 'c', 'd', 'e', 'f'];

var indexToSplit = arr.indexOf('c');
var first = arr.slice(0, indexToSplit);
var second = arr.slice(indexToSplit + 1);

console.log({first, second});

25voto

Julien Altieri Points 660

Partager cette fonction de commodité que j'ai fini par créer après avoir visité cette page.

 function chunkArray(arr,n){
     var chunkLength = Math.max(arr.length/n ,1);
     var chunks = [];
     for (var i = 0; i < n; i++) {
         if(chunkLength*(i+1)<=arr.length)chunks.push(arr.slice(chunkLength*i, chunkLength*(i+1)));
     }
     return chunks; 
 }

Exemple d'utilisation :

 chunkArray([1,2,3,4,5,6],2);
//returns [[1,2,3],[4,5,6]]

chunkArray([1,2,3,4,5,6,7],2);
//returns [[1,2,3],[4,5,6,7]]

chunkArray([1,2,3,4,5,6],3);
//returns [[1,2],[3,4],[5,6]]

chunkArray([1,2,3,4,5,6,7,8],3);
//returns [[1,2],[3,4,5],[6,7,8]]

chunkArray([1,2,3,4,5,6,7,8],42);//over chunk
//returns [[1],[2],[3],[4],[5],[6],[7],[8]]

10voto

Sergio Tulentsev Points 82783

Essaye celui-là:

 var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var point = 'c';

var idx = arr.indexOf(point);

arr.slice(0, idx) // ["a", "b"]
arr.slice(idx + 1) // ["d", "e", "f"]

4voto

WereWolf - The Alpha Points 49671
var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var point = 'c';
Array.prototype.exists = function(search){
    for (var i=0; i<this.length; i++) {
        if (this[i] == search) return i;
    }
    return false;
} 

if(i=arr.exists(point))
{
    var neewArr=arr.splice(i);
    neewArr.shift(0);

    console.log(arr); // output: ["a", "b"]
    console.log(neewArr); // output: ["d", "e", "f"] 
}

Voici un exemple .

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