当前位置: 首页 > 知识库问答 >
问题:

JavaScript-从n个数组中生成带有m个元素的组合[重复]

公西鸿博
2023-03-14
[[0,1], [0,1,2,3], [0,1,2]]
0,0,0 // item 0 from array 0, item 0 from array 1, item 0 from array 2
0,0,1
0,0,2
0,1,0
0,1,1
0,1,2
0,2,0
0,2,1
0,2,2

如果数组的数量是固定的,那么就很容易实现硬编码。但是数组的数量可能会有所不同:

[[0,1], [0,1]]
[[0,1,3,4], [0,1], [0], [0,1]]

任何帮助都将不胜感激。

共有1个答案

羊昊苍
2023-03-14

下面是一个使用递归帮助器函数的非常简单和简短的示例:

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

用法:

cartesian([0,1], [0,1,2,3], [0,1,2]);

要使函数采用数组数组,只需将签名更改为函数cartesian(args)而不是使用rest参数语法。

 类似资料:
  • 问题内容: 在JavaScript中,我想不出代码来从n个数组(其中m个元素)中生成组合的代码。对于其他语言,我也曾见过类似的问题,但答案包含了我不确定如何翻译的语法或库魔术。 考虑以下数据: 3个数组,其中包含不同数量的元素。我想做的是通过组合每个数组中的一项来获得所有组合。 例如: 等等。 如果数组的数目是固定的,则很容易进行硬编码实现。但是数组的数量可能会有所不同: 任何帮助将非常感激。 问

  • 我想在java中创建一个方法,该方法接收两个字符串列表:

  • 我想从数组创建所有可能的数组可能大于或小于。输出数组中的元素不必是唯一的。 例如: 根据这个数组 给定所需大小的函数,应返回: 例2 根据这个数组 给定所需大小的函数,应返回: 用Swift怎么做?

  • 本文向大家介绍JavaScript函数采用数字n并生成前n个素数的数组,包括了JavaScript函数采用数字n并生成前n个素数的数组的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个JavaScript函数,该函数接受数字n,并返回包含前n个质数的数组。我们知道素数是只能被1整除的数,例如2、3、19、37、73等。 我们将首先编写一个检查给定数是否为质数的函数,然后运行循环以生成n个质

  • 问题描述 这道题是 LeetCode 77 题。 给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。 解法一:回溯法 递归 k 层。每层选取一个数,然后递归地选取 k-1 个数,直到选够 k 个数为止。设每层的数字区间为 [start, end],则这一层可以选择 [start, end-(k-1)] 的任何一个数 i,只要给下一层留出 k-1 个数即可。下一层的数字区间为

  • 问题内容: 我想编写一个函数,该函数以字母数组作为参数,并选择多个字母。 假设您提供8个字母的数组,并希望从中选择3个字母。然后您将获得: 返回由3个字母组成的数组(或单词)。 问题答案: 格雷码您会遇到的一个问题当然是记忆力,而且很快,您的集合中会有20个元素出现问题-20 C 3 =1140。而且,如果要遍历集合,最好使用修改后的灰色代码算法,因此您不必将所有代码都保存在内存中。这些将根据之前