Maison  >  Article  >  interface Web  >  La méthode d'aplatissement du tableau javascript est expliquée en détail

La méthode d'aplatissement du tableau javascript est expliquée en détail

小云云
小云云original
2018-01-24 10:00:221767parcourir

Dans le processus de développement, nous rencontrons toujours des problèmes courants, tels que l'aplatissement d'un tableau bidimensionnel en un tableau unidimensionnel, ou l'aplatissement d'un tableau tridimensionnel en un tableau unidimensionnel. Ces problèmes seront toujours repensés lorsqu’ils seront rencontrés, il est donc préférable de les affiner et de les résumer.

L'auteur ci-dessous vous montrera deux méthodes pour aplatir un tableau multidimensionnel en un tableau unidimensionnel. Cela peut être considéré comme un point de départ. Si vous avez une meilleure méthode, vous pouvez. postez-le dans la zone de message.

First est la première méthode, traitement récursif, le code est le suivant :


var arr = [1, 2, 3, [3, 3, 3, [5, 4, 5, 6, 6, 7, 8]],
 [333, 4444]
];
function product() {
 // 1、创建一个空数组,
 var newarr = [];
 ///2、并且返回一个函数,函数参数为要拍平的数组
 return function flatten(arr) {
  // 3、循环数组,判断每一项,不为输的话将其塞入newarr
  // 若为数组,递归调用 faltten,并将结果与newarr合并
  for (var t of arr) {
   if (!Array.isArray(t)) {
    newarr.push(t);
   } else {
    newarr.concat(flatten(t))
   }
  }
  return newarr
 }
}
var flatten = product();
console.log(flatten(arr))

Le résultat de l'exécution est :

La méthode ci-dessus est tout à fait satisfaisante. Veuillez consulter les commentaires pour une explication détaillée du code. La méthode suivante utilise certaines nouvelles fonctionnalités du langage JavaScript :


var arr = [1, 2, 3, [3, 3, 3, [5, 4, 5, 6, 6, 7, 8]],
 [333, 4444]
];
function flatten(arr){
 return arr.reduce(function(pre,cur){
  if(!Array.isArray(cur)){
   return [...pre,cur];
  }else{
   return [...pre,...flatten(cur)]
  }
 },[])
}
console.log(flatten(arr))

Le code ci-dessus utilise une nouvelle fonctionnalité d'ES6 pour étendre l'algorithme cloud "...", "[...abc,...fff]" dont la fonction est équivalente à abc .concat(fff), cette utilisation est plus intuitive et claire, et la méthode de réduction est utilisée. réduire est une méthode de tableau en langage javascript.

Lors de l'appel de la méthode recduce sur un tableau, vous pouvez passer deux paramètres. Le premier paramètre est la fonction de rappel et le deuxième paramètre est une valeur initiale. Deux paramètres doivent être passés dans la fonction de rappel. Le premier paramètre est la valeur de retour de chaque exécution de la fonction, et le deuxième paramètre est la valeur du tableau correspondant à l'index actuel. Le deuxième paramètre de réduire peut être omis. S'il est omis, les paramètres du premier appel de la fonction de rappel sont les valeurs des premier et deuxième éléments du tableau. S'il n'est pas omis, le premier paramètre de la fonction de rappel. est cette valeur initiale. Dans l'exemple ci-dessus, le deuxième paramètre de réduire est défini sur un tableau vide.

Réduire l'adresse du document : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

Par rapport au premier Le premier est plus facile à comprendre, tandis que la difficulté de la seconde réside dans l’utilisation et la compréhension de la fonction de réduction.

Recommandations associées :

Méthode php pour trouver le numéro palindrome dans une plage et la racine carrée est aussi un numéro palindrome

JavaScript est basé sur l'itération de Newton Exemple d'analyse de la façon de trouver la racine carrée d'un nombre à virgule flottante

À propos du problème de la racine carrée en PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn