J'ai besoin de votre aide dans le tableau JS. J'ai une fonction où j'ai besoin de vérifier si le tableau passé en argument est une dimension ou 2 dimensions

Disons :

function test(array){
if(array is single dimension{
 console.log("Single dimension");
}else{
console.log("2Dimension");

Et ce qui suit devrait s'afficher:

test([1,2,3]); // Should log "Single dimension"
test([[1,2,3],[1,2,3]]); // Should log "2Dimension"

Toute aide sera vraiment sympa! Je vous remercie!

1
Kevkeev13 3 nov. 2019 à 19:32

4 réponses

Meilleure réponse

Comment savoir si un tableau est à une ou plusieurs dimensions?

JavaScript n'a pas de tableaux multidimensionnels; il a des tableaux de tableaux. Il y a une différence subtile entre ces deux choses. De plus, un JavaScript peut avoir des entrées qui sont des tableaux et d'autres entrées qui ne sont pas , ce qui ne le rend que partiellement "multidimensionnel".

Si vous devez savoir qu'un tableau ne contient aucun tableau (par exemple, est unidimensionnel), la seule façon est de vérifier chaque entrée qu'il contient pour voir si cette entrée est un tableau:

if (theArray.every(entry => !Array.isArray(entry)) {
    // One dimensional
} else {
    // Has at least one entry that is an array
}

Voici un exemple de tableau qui n'a que certaines entrées qui sont des tableaux et d'autres qui ne le sont pas:

const a = [1, 2, ["a", "b"], 3];
console.log(a.length); // 4, not 5
console.log(Array.isArray(a[0])); // false
console.log(Array.isArray(a[2])); // true
3
T.J. Crowder 3 nov. 2019 à 16:35

Cela peut être vérifié comme ça:

const arr = [1, 2, 3];
const multiDimensional = [
  [1,2,3],
  [1,2,3]
];

const isMultiDimensional = (arr) => {
  const result = arr.reduce((a, c) => {
    if (c.constructor === Array)
      a = true;

    return a;
  }, false)
  return result;
}

console.log(isMultiDimensional ([1, 2, 3]));
console.log(isMultiDimensional ([[1, 2, 3], [1, 2, 3]]));
0
StepUp 3 nov. 2019 à 17:14

Vous pouvez adopter une approche récursive et vérifier le premier élément pour les tableaux imbriqués.

function getDimension([array]) {
    return 1 + (Array.isArray(array) && getDimension(array));
}    
    
console.log(getDimension([1, 2, 3]));
console.log(getDimension([[1, 2, 3], [1, 2, 3]]));
1
Nina Scholz 3 nov. 2019 à 16:39

Lié à celui-ci Obtenez la profondeur du tableau en JavaScript

Vous pouvez utiliser une fonction comme celle-ci:

function getArrayDepth(value) {
  return Array.isArray(value) ? 
    1 + Math.max(...value.map(getArrayDepth)) :
    0;
}

Alors simplement

const testArray = [1,2,3];
if (getArrayDepth(testArray) > 1){
 console.log('One array');
}else{
  console.log('Array in array')
}

0
Kamil Karnasiewicz 3 nov. 2019 à 16:40