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

javascript - 求二维数组全排列为什么一直不能返回正确结果呢呢?

谭泉
2023-06-29

题目描述

输入[[A, B], [a, b], [1, 2]]
输出[Aa1, Aa2, Ab1, Ab2, Ba1, Ba2, Bb1, Bb2]

相关代码

const arr = [
  ["1", "2", "3"],
  ["a", "b", "c"],
  ["A", "B", "C"],
];

function merge(a, b) {
  const result = [];
  b.forEach((e) => {
    a.forEach((el) => {
      result.push(e + el);
    });
  });
  return result;
}

function permutation(arr) {
  if (arr.length <= 1) {
    const result = arr.pop()
    console.log(result);
    // return result;
    return '123'
  } else {
    const lastMerge = merge(arr.pop(), arr.pop());
    permutation([...arr, lastMerge]);
  }
}

const result = permutation(arr);
console.log('result:',result)

image.png

执行结果如上,为什么return 都是 undefined呢,很困惑,求高人指教,亦可优化该程式,��‍��‍��‍

共有1个答案

邹德泽
2023-06-29
function permutation(arr) {
  if (arr.length <= 1) {
    return arr.pop();
  } else {
    const lastMerge = merge(arr.pop(), arr.pop());
    return permutation([...arr, lastMerge]);
  }
}
 类似资料:
  • 好的,我已经成功地将一个列表变成了一个二维数组。唯一的问题是输出只索引一次,所以基本上,如果我想将每个列表中的10个元素添加到一个二维数组中,那么这个二维数组将只有一个包含“n”个元素的索引。 例如 我愿意 相反,它正在返回: 我接受了以下建议:将ArrayList转换为包含不同长度数组的2D数组 这是我的代码: 我正在使用数据提供者(DataProviders)和TestNG,它们需要返回一个二

  • 问题内容: 情况一: 输出: 2005年7月8日星期五00:00:00 GMT-0700(PST) 案例二: 输出: Thu Jul 07 2005 17:00:00 GMT-0700(PST) 为什么第二次解析不正确? 问题答案: 在第5版规范发布之前,该Date.parse方法完全依赖于实现(除后者返回数字而不是a之外,其他方法new Date(string)等效)。在第5版规范中,添加了该要

  • 我正在使用postgis计算两个地理坐标之间的距离。 它返回给我53536.743496517米,大约等于54公里,但实际距离是103公里,我通过http://boulter.com/gps/distance/ 我在询问中是否做错了什么?

  • 我正在尝试在代码中使用NSPredicate搜索名称。搜索工作正常,但不会返回适当的结果。当我搜索一个名称(例如“Colin”)时,它会返回表中的所有其他名称或另一个名称(例如“Mike”),但如果我输入一个不存在的随机字符串,它会返回:“找不到结果”。当我在搜索栏中键入一个名字(例如Lisa)时,我希望它能找到这个名字(Lisa)并返回它,但它没有这样做 这是我的代码: 自己name返回表中的所

  • 一个标准的习语是 所以如果这行得通,为什么我不能说 g表示“

  • line.FlatMap(WordSutil::GetWords)是方法引用中错误的返回类型: 编码方法: