当前位置: 首页 > 面试题库 >

JavaScript中的排列?

从开济
2023-03-14
问题内容

我正在尝试编写一个执行以下操作的函数:

  • 将整数数组作为参数(例如[1,2,3,4])
  • 创建所有[1,2,3,4]可能排列的数组,每个排列的长度为4

下面的函数(我在网上找到了它)通过将字符串作为参数并返回该字符串的所有排列来实现

我无法弄清楚如何对其进行修改以使其与整数数组一起工作,(我认为这与某些方法在字符串上的处理方式与在整数上的处理方式不同有关,但是我不确定。 ..)

var permArr = [], usedChars = [];
function permute(input) {
  var i, ch, chars = input.split("");
  for (i = 0; i < chars.length; i++) {
    ch = chars.splice(i, 1);
    usedChars.push(ch);
    if (chars.length == 0)
      permArr[permArr.length] = usedChars.join("");
    permute(chars.join(""));
    chars.splice(i, 0, ch);
    usedChars.pop();
  }
  return permArr
};

注意:我正在寻找使函数返回 整数 数组, 而不是 字符串 数组的 方法

我真的需要使用JavaScript的解决方案。我已经想出了如何在python中做到这一点


问题答案:

如果您注意到,代码实际上会在进行任何置换之前将字符拆分成数组,因此您只需删除联接和拆分操作

var permArr = [],

  usedChars = [];



function permute(input) {

  var i, ch;

  for (i = 0; i < input.length; i++) {

    ch = input.splice(i, 1)[0];

    usedChars.push(ch);

    if (input.length == 0) {

      permArr.push(usedChars.slice());

    }

    permute(input);

    input.splice(i, 0, ch);

    usedChars.pop();

  }

  return permArr

};





document.write(JSON.stringify(permute([5, 3, 7, 1])));


 类似资料:
  • 我已经从ajax查询中检索到一个新闻提要。在该对象中,有以下格式的日期: 使现代化 使用这段代码它工作正常!

  • 本文向大家介绍JavaScript中的冒泡排序法,包括了JavaScript中的冒泡排序法的使用技巧和注意事项,需要的朋友参考一下 利用sort()冒泡排序: 不声明第三个变量冒泡排序: 第一层遍历数组的个数(要遍历多少次),第二次遍历(共要循环几次) 今天在网上看见这样一个冒号排序 一个数组包含元素号,“110金刚3号”,“200金刚1号”,“50金刚2号”,“30金刚6号”,“30金刚5号”,

  • 请问如何让ar1这种ip排序,js可以实现吗? 另外,我希望是用换行符分割(现在是,分割),排序后也是一行一个。请问可以实现吗

  • 本文向大家介绍JavaScript中三种常见的排序方法,包括了JavaScript中三种常见的排序方法的使用技巧和注意事项,需要的朋友参考一下 1、快速排序: 2、插入排序 3、冒泡排序 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!

  • JavaScript箭头函数 let x = [1,2,3,4,5,6,7,8]; x.sort( (a,b) => b-a ); console.log(x); 实现逆序的原理是什么? 求大佬解惑

  • 如何快速求一个排列在所有排列中的位置(按字典序排列)? 问题出自codewars Alphabetic Anagrams 我想的笨办法是 先排序得到最小的排列 和目标排列进行比较,如果相同,结束;否则调用nextPermutation计算出下一个排列 重复步骤2,3 代码实现 但是超时了。 我看解答区的一个答案是这样写的,但是没看懂什么意思。