Maison > interface Web > js tutoriel > le corps du texte

Algorithme de produit cartésien et produit cartésien à tableaux multiples en JS (tutoriel détaillé)

亚连
Libérer: 2018-06-22 18:24:16
original
2461 Les gens l'ont consulté

Cet article présente principalement l'algorithme de produit cartésien JS et la méthode d'implémentation de produits cartésiens à tableaux multiples. Il analyse les compétences opérationnelles associées de JavaScript pour générer des produits cartésiens basés sur des objets ou des tableaux sous forme d'exemples. à cela

L'exemple de cet article décrit l'algorithme de produit cartésien JS et la méthode d'implémentation du produit cartésien à tableaux multiples. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

code d'implémentation js de l'algorithme de produit cartésien, génère un produit cartésien basé sur des objets ou des tableaux, et introduit également un exemple javascript de produit cartésien à tableaux multiples comme algorithme de produit cartésien d'implémentation Java et exemple de code.

1. Code d'algorithme de produit cartésien JavaScript

Exemple, générer un produit cartésien basé sur un objet ou un tableau.

//笛卡儿积组合
function descartes(list) {
  //parent上一级索引;count指针计数
  var point = {};
  var result = [];
  var pIndex = null;
  var tempCount = 0;
  var temp = [];
  //根据参数列生成指针对象
  for (var index in list) {
    if (typeof list[index] == 'object') {
      point[index] = {
        'parent': pIndex,
        'count': 0
      }
      pIndex = index;
    }
  }
  //单维度数据结构直接返回
  if (pIndex == null) {
    return list;
  }
  //动态生成笛卡尔积
  while (true) {
    for (var index in list) {
      tempCount = point[index]['count'];
      temp.push(list[index][tempCount]);
    }
    //压入结果数组
    result.push(temp);
    temp = [];
    //检查指针最大值问题
    while (true) {
      if (point[index]['count'] + 1 >= list[index].length) {
        point[index]['count'] = 0;
        pIndex = point[index]['parent'];
        if (pIndex == null) {
          return result;
        }
        //赋值parent进行再次检查
        index = pIndex;
      } else {
        point[index]['count']++;
        break;
      }
    }
  }
}
Copier après la connexion

Méthode d'appel :

var result = descartes({'aa':['a','b','c','d'],'bb':['$','%','^','&']});
alert(result);//result就是笛卡尔积
Copier après la connexion

2. JS implémente un produit cartésien à plusieurs tableaux

Exemple :

<script>
(function() {
  dwn = function(a) {
    document.writeln(a + "<br />")
  };
  //笛卡尔积
  var Cartesian = function(a, b) {
    var ret = [];
    for (var i = 0; i < a.length; i++) {
      for (var j = 0; j < b.length; j++) {
        ret.push(ft(a[i], b[j]));
      }
    }
    return ret;
  }
  var ft = function(a, b) {
    if (! (a instanceof Array)) a = [a];
    var ret = Array.call(null, a);
    ret.push(b);
    return ret;
  }
  //多个一起做笛卡尔积
  multiCartesian = function(data) {
    var len = data.length;
    if (len == 0) return [];
    else if (len == 1) return data[0];
    else {
      var r = data[0];
      for (var i = 1; i < len; i++) {
        r = Cartesian(r, data[i]);
      }
      return r;
    }
  }
})();
var data = [[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;], [1, 2, 3, 4], [&#39;A&#39;, &#39;B&#39;], [&#39;#&#39;, &#39;@&#39;, &#39;+&#39;], [&#39;Mary&#39;, &#39;Terry&#39;, &#39;KYO&#39;]];
var r = multiCartesian(data);
for (var i = 0; i < r.length; i++) {
  dwn("(" + r[i] + ")");
}
</script>
Copier après la connexion

Ce qui précède, c'est moi. Je l'ai compilé pour tout le monde, j'espère qu'il sera utile à tout le monde à l'avenir.

Articles connexes :

Introduction détaillée à l'utilisation de ref ($refs) dans Vue.js

Interprétation détaillée du père- son communication dans vue

Comment implémenter le composant clavier numérique à l'aide de Vue

Comment déployer https à l'aide de nginx + node

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!