无法从用于创建字符串排列数组的递归函数中返回数组的长度

推力

我想返回递归查找字符串排列后生成的数组的长度。该代码工作正常,并产生排列的正确阵列,但是当我尝试返回filtered.length我收到以下错误信息:Uncaught TypeError: otherPerms is not iterable

当我在过滤数组以获得我想要的结果之前尝试返回数组的长度时,也会发生同样的错误。

如果我return filtered然后调用该函数,以下效果很好

let permutation = permutate('aab'); console.log(permutation.length); // 2 console.log(permutation); // ["aba", "aba"]

但我希望能够从函数内部返回数组的长度。

下面的代码按预期工作,直到我尝试返回生成的数组的长度:

function permutate(str) {
    let result = [];

    if (str.length === 1) {
      result.push(str);
    }

    for (let i = 0; i < str.length; i++) {
      var firstChar = str[i];
      var otherChar = str.substring(0, i) + str.substring(i + 1);
      var otherPerms = permutate(otherChar);

      for (let perm of otherPerms) {
        result.push(firstChar + perm);
      }
    } 

    let filtered = result.filter((str) => !(/(\w)\1/).test(str)); // To get permutations with non-repeating adjacent letters
    return filtered;
}
弗朗西斯科·加里多

如果您尝试从函数内部返回长度,则递归将不起作用,因为您不再返回“otherPerms”所需的内容。

如果您希望它返回长度,则必须将该函数包装在另一个函数中

function permutate(str) {

	return recursivePermutate(str).length;

	function recursivePermutate(str) {
		let result = [];

	    if (str.length === 1) {
	      result.push(str);
	    }

	    for (let i = 0; i < str.length; i++) {
	      var firstChar = str[i];
	      var otherChar = str.substring(0, i) + str.substring(i + 1);
	      var otherPerms = recursivePermutate(otherChar);

	      for (let perm of otherPerms) {
	        result.push(firstChar + perm);
	      }
	    } 

	    let filtered = result.filter((str) => !(/(\w)(?=\1)/).test(str)); // To get permutations with non-repeating adjacent letters
	    return filtered;
	}
    
}

console.log(permutate("ab"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

递归函数,用于清除数组/字符串中的零

来自分类Dev

如何在递归函数中返回字符串数组或进行复制?

来自分类Dev

如何在递归函数中返回字符串数组或将其复制?

来自分类Dev

JavaScript中字符串数组的长度

来自分类Dev

C ++数组中字符串的长度

来自分类Dev

分割字符串后在Javascript函数中返回数组

来自分类Dev

在C中返回字符串数组的函数

来自分类Dev

分割字符串后在Javascript函数中返回数组

来自分类Dev

函数应返回字符串或数组

来自分类Dev

调用返回字符串数组的函数

来自分类Dev

从指针数组返回字符串的函数

来自分类Dev

无法在 VBA 中返回字符串数组

来自分类Dev

无法从字符串数组创建Set

来自分类Dev

实现一个C函数,该函数在给定字符上拆分字符串,并在拆分后返回字符串数组(以及数组长度)

来自分类Dev

来自Perl数组的字符串长度始终返回1

来自分类Dev

来自Perl数组的字符串的长度始终返回1

来自分类Dev

Javascript数组字符串自动换行问题---按顺序排列字符串并给定数组长度

来自分类Dev

从字符串数组递归创建树层次结构

来自分类Dev

返回数组中的子字符串

来自分类Dev

为什么从字符串返回的空数组在golang中的长度为1?

来自分类Dev

在C中创建字符串数组

来自分类Dev

ORACLE PL-SQL如何创建函数以分割字符串并将n长的“块”返回到数组中?

来自分类Dev

ORACLE PL-SQL如何创建函数以分割字符串并将n长的“块”返回到数组中?

来自分类Dev

在字符串数组中搜索字符串的函数

来自分类Dev

字符串排列。存储在数组中会返回相同的排列集吗?

来自分类Dev

在JavaScript中,给定输入字符串,创建一个函数,该函数返回包含n个2d数组的数组

来自分类Dev

在Haskell递归函数中返回串联的字符串

来自分类Dev

在Haskell递归函数中返回串联的字符串

来自分类Dev

在数组中添加长度或每个字符串,并创建一个新数组,并附加结果

Related 相关文章

  1. 1

    递归函数,用于清除数组/字符串中的零

  2. 2

    如何在递归函数中返回字符串数组或进行复制?

  3. 3

    如何在递归函数中返回字符串数组或将其复制?

  4. 4

    JavaScript中字符串数组的长度

  5. 5

    C ++数组中字符串的长度

  6. 6

    分割字符串后在Javascript函数中返回数组

  7. 7

    在C中返回字符串数组的函数

  8. 8

    分割字符串后在Javascript函数中返回数组

  9. 9

    函数应返回字符串或数组

  10. 10

    调用返回字符串数组的函数

  11. 11

    从指针数组返回字符串的函数

  12. 12

    无法在 VBA 中返回字符串数组

  13. 13

    无法从字符串数组创建Set

  14. 14

    实现一个C函数,该函数在给定字符上拆分字符串,并在拆分后返回字符串数组(以及数组长度)

  15. 15

    来自Perl数组的字符串长度始终返回1

  16. 16

    来自Perl数组的字符串的长度始终返回1

  17. 17

    Javascript数组字符串自动换行问题---按顺序排列字符串并给定数组长度

  18. 18

    从字符串数组递归创建树层次结构

  19. 19

    返回数组中的子字符串

  20. 20

    为什么从字符串返回的空数组在golang中的长度为1?

  21. 21

    在C中创建字符串数组

  22. 22

    ORACLE PL-SQL如何创建函数以分割字符串并将n长的“块”返回到数组中?

  23. 23

    ORACLE PL-SQL如何创建函数以分割字符串并将n长的“块”返回到数组中?

  24. 24

    在字符串数组中搜索字符串的函数

  25. 25

    字符串排列。存储在数组中会返回相同的排列集吗?

  26. 26

    在JavaScript中,给定输入字符串,创建一个函数,该函数返回包含n个2d数组的数组

  27. 27

    在Haskell递归函数中返回串联的字符串

  28. 28

    在Haskell递归函数中返回串联的字符串

  29. 29

    在数组中添加长度或每个字符串,并创建一个新数组,并附加结果

热门标签

归档