javascript - 多维For循环

标签 javascript angularjs arrays

我有三个数组,我需要基于这三个数组创建一组规则,但我正在努力解决如何编写一个函数的逻辑,该函数将为我提供每个数组中每个条目的每种可能的组合。所以,我有,例如:

var array 1 = [1, 2];
var array 2 = [3, 4, 5];
var array 4 = [6, 7, 8, 9, 10];

而且我不想取回所有可能组合的字符串、对象等(我不会在这里尝试解决)。例如:

var result = ["1-3-6", "2-3-6", "1,4,6"];

等等,到目前为止,我已经尝试坐下来编写一个 For 循环,但我真的不知道从哪里开始。我还查看了 map ,但找不到任何如此深入的示例,所以我不确定 map 是否能完成这项工作。

我想要加载的实际数据,第一个数组有 2 个条目,第二个数组有 7 个条目,最后一个数组有 6 个条目,所以对于我所做的工作,应该有 84 个条目。这是基于 (Array 3 * Array 2) * Array 1。

希望一切都有意义,我知道这有点令人困惑。另外值得一提的是,我使用的是 Angular JS,因此首选 Angular 解决方案或普通 JS 解决方案,但不是必需的。

最佳答案

您正在寻找的是 Cartesian product数组。您可以使用这样的函数(摘自 here ):

function cartesian() {
    var r = [], arg = arguments, max = arg.length-1;
    function helper(arr, i) {
        for (var j=0, l=arg[i].length; j<l; j++) {
            var a = arr.slice(0); // clone arr
            a.push(arg[i][j]);
            if (i==max)
                r.push(a);
            else
                helper(a, i+1);
        }
    }
    helper([], 0);
    return r;
}

有很多例子,例如:

JavaScript - Generating combinations from n arrays with m elements

使用递归:

Finding All Combinations of JavaScript array values

Cartesian product of multiple arrays in JavaScript

并且具有多个 (N) 数组:

Combine 2 arrays into 1 in all possible ways in JavaScript

希望对你有帮助!

关于javascript - 多维For循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46094586/

相关文章:

javascript - 使用 d3.js 从动态生成的数据中绘制数据点

javascript - 使用 Angular.js + UI 路由器进行 Karma 测试

javascript - 弹出一个数组的随机字符串

ios - 如何为 NSNumbers 数组的数组定义 Objective-C 轻量级泛型?

javascript - Angular 应用程序在 IE 中崩溃,但在开发工具打开时不会崩溃

javascript - 从对象中获取元素并与数组进行比较 - Jquery

javascript - React Native - 如何使用 TouchableHighlights 显示相机胶卷中的一张特定图像

javascript - lodash 流和多个参数

javascript - 汉堡菜单,如何改变十字的颜色

javascript - AngularJS 显示为纯文本