96 votes

Obtenir une colonne d'un tableau à deux dimensions

Comment puis-je récupérer une colonne à partir d'un Tableau à 2 dimensions et pas une seule entrée ? Je fais cela parce que je veux rechercher une chaîne de caractères dans une seule des colonnes. S'il existe un autre moyen d'y parvenir, dites-le moi.

J'utilise le tableau défini de cette façon :

var array=[];

A la fin, la taille de ce tableau est de 20(col)x3(lignes) et je dois lire la première ligne et vérifier l'existence d'une phrase dans celle-ci.

163voto

Leif Carlsen Points 876

Prendre une colonne est facile avec le fonction cartographique .

// a two-dimensional array
var two_d = [[1,2,3],[4,5,6],[7,8,9]];

// take the third column
var col3 = two_d.map(function(value,index) { return value[2]; });

Pourquoi s'embêter avec la tranche ? Juste filtre la matrice pour trouver les lignes qui nous intéressent.

var interesting = two_d.filter(function(value,index) {return value[1]==5;});
// interesting is now [[4,5,6]]

Tristement, le filtre et la carte ne sont pas disponibles en natif sur IE9 et les versions inférieures . La documentation MDN fournit des implémentations pour les navigateurs sans support natif.

71voto

Gothdo Points 4842

Utilisez Array.prototype.map() avec un fonction de flèche :

const arrayColumn = (arr, n) => arr.map(x => x[n]);

const twoDimensionalArray = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9],
];

console.log(arrayColumn(twoDimensionalArray, 0));

Note : Array.prototype.map() et les fonctions de flèche font partie de l'ECMAScript 6 et ne sont pas prises en charge partout. Table de compatibilité ECMAScript 6 .

25voto

Rob W Points 125904

Vous devez boucler à travers chaque élément dans le tableau 2d-, et obtenir le n e colonne.

    function getCol(matrix, col){
       var column = [];
       for(var i=0; i<matrix.length; i++){
          column.push(matrix[i][col]);
       }
       return column;
    }

    var array = [new Array(20), new Array(20), new Array(20)]; //..your 3x20 array
    getCol(array, 0); //Get first column

8 votes

Je savais que je pouvais le faire de cette manière, mais je pensais qu'il existait une fonction ou une méthode prédéfinie pour récupérer ces données. Quoi qu'il en soit, merci pour la réponse, je l'apprécie.

1 votes

@intsoumen Cette question concerne JavaScript, pas Python.

21voto

Yuri Khristich Points 1671
var data = [
    ["a1", "a2", "a3"],
    ["b1", "b2", "b3"],
    ["c1", "c2", "c3"]
];

var col0 = data.map(d => d[0]); // [ 'a1', 'b1', 'c1' ]

var col1 = data.map(d => d[1]); // [ 'a2', 'b2', 'c2' ]

16voto

Grant Miller Points 6261

Vous pouvez utiliser les éléments suivants méthodes d'échantillonnage pour obtenir une colonne d'un tableau 2D :

Array.prototype.map()

const array_column = (array, column) => array.map(e => e[column]);

Array.prototype.reduce()

const array_column = (array, column) => array.reduce((a, c) => {
  a.push(c[column]);
  return a;
}, []);

Array.prototype.forEach()

const array_column = (array, column) => {
  const result = [];

  array.forEach(e => {
    result.push(e[column]);
  });

  return result;
};

Si votre tableau 2D est un carré (le même nombre de colonnes pour chaque ligne), vous pouvez utiliser la méthode suivante :

Array.prototype.flat() / .filter()

const array_column = (array, column) => array.flat().filter((e, i) => i % array.length === column);

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