JavaScript 找到数组值的所有组合

JavaScript 找到数组值的所有组合

任务是获取数组的笛卡尔积(在连接它们后找到所有组合)。这里使用JavaScript讨论了2种方法。

方法:

  • 使用JavaScript Array.reduce()方法
  • 使用递归方法

方法1

  • 首先,声明一个包含多个数组的数组。
  • 使用递归解决问题。当数组长度减少为零时,返回到目前为止构建的字符串。否则
  • 通过reduce()方法减少第一个数组元素,并返回递归结果返回(在离开数组的第一项后每次调用递归)加上与每个数组元素串联在一起的先前值。
  • 返回包含所有组合的最终结果数组。

示例1: 此示例使用JavaScript Aarry.reduce()方法实现上述方法。

let arr = [
    ['m', 'n'],
    ['c'],
    ['d', 'e', 'f']
];
 
function getCombn(arr, pre) {
    pre = pre || '';
     
    if (!arr.length) {
        return pre;
    }
     
    let ans = arr[0].reduce(function (ans, value) {
        return ans.concat(getCombn(
            arr.slice(1), pre + value));
    }, []);
    return ans;
}
 
console.log(getCombn(arr));

输出

[ 'mcd', 'mce', 'mcf', 'ncd', 'nce', 'ncf' ]

方法2

  • 首先,声明一个包含多个数组的数组。
  • 使用递归来解决问题。基本条件是当数组的长度减少到1时,返回数组的那个元素。否则,
  • 在离开数组的第一个元素后调用递归,并将结果存储在一个变量(otherCases)中。
  • 遍历数组(otherCases)的每个元素,并在每个元素中遍历数组(arr)的第一个元素。
  • 将数组(arr [0])的每个元素与数组(otherCases)连接起来,并将结果推入答案数组中。

示例2: 此示例使用JavaScript中的递归实现了上述方法。

// Create new array
let arr = [
    ['m', 'n'],
    ['c'],
    ['d', 'e', 'f']
];
 
// Funtion to get all combinations
function getCombn(arr) {
 
    // When array contain 1 element
    if (arr.length == 1) {
        return arr[0];
    } else {
        let ans = [];
 
        // Recur with the rest of the array.
        let otherCases = getCombn(arr.slice(1));
        for (let i = 0; i < otherCases.length; i++) {
            for (let j = 0; j < arr[0].length; j++) {
                ans.push(arr[0][j] + otherCases[i]);
            }
        }
        return ans;
    }
}
 
// Display output
console.log(getCombn(arr));

输出

[ 'mcd', 'ncd', 'mce', 'nce', 'mcf', 'ncf' ]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程