Heim > Web-Frontend > js-Tutorial > Hauptteil

Kartesischer Produktalgorithmus und kartesisches Produkt mit mehreren Arrays in JS (ausführliches Tutorial)

亚连
Freigeben: 2018-06-22 18:24:16
Original
2477 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich der JS-Algorithmus für kartesische Produkte und die Implementierungsmethode für kartesische Produkte mit mehreren Arrays vorgestellt. Er analysiert die zugehörigen Betriebsfähigkeiten von JavaScript, um kartesische Produkte basierend auf Objekten oder Arrays in Form von Beispielen zu generieren dazu

Das Beispiel in diesem Artikel beschreibt den JS-Algorithmus für kartesische Produkte und die Implementierungsmethode des kartesischen Produkts mit mehreren Arrays. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

js-Implementierungscode des kartesischen Produktalgorithmus, generiert ein kartesisches Produkt basierend auf Objekten oder Arrays und stellt außerdem ein Javascript-Beispiel für ein kartesisches Produkt mit mehreren Arrays vor als Java-Implementierung, kartesischer Produktalgorithmus und Beispielcode.

1. JavaScript-Code für den kartesischen Produktalgorithmus

Beispiel: Generieren Sie ein kartesisches Produkt basierend auf einem Objekt oder Array.

//笛卡儿积组合
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;
      }
    }
  }
}
Nach dem Login kopieren

Aufrufmethode:

var result = descartes({'aa':['a','b','c','d'],'bb':['$','%','^','&']});
alert(result);//result就是笛卡尔积
Nach dem Login kopieren

2. JS implementiert kartesisches Produkt mit mehreren Arrays

Beispiel:

<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>
Nach dem Login kopieren

Das Obige habe ich für alle zusammengestellt Ich hoffe, es wird in Zukunft für alle hilfreich sein.

Verwandte Artikel:

Detaillierte Einführung in die Verwendung von ref ($refs) in Vue.js

Detaillierte Interpretation von Vater- Sohnkommunikation in Vue

So implementieren Sie die numerische Tastaturkomponente mit Vue

So stellen Sie https mit Nginx + Node bereit

Das obige ist der detaillierte Inhalt vonKartesischer Produktalgorithmus und kartesisches Produkt mit mehreren Arrays in JS (ausführliches Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage