javascript,排列组合

Posted 吃个石头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript,排列组合相关的知识,希望对你有一定的参考价值。

输入参数 ‘abc‘,输出所有组合 [‘abc‘,‘acb‘,‘bac‘,‘bca‘,‘cab‘,‘cba‘]

思路:分为3列,第一列为  a, b,c ;第二列为a,b,c出去第一列选中过后的,比如第一列选了a,第二列就为b,c。以此类推。最终结果为每一列选中的字符串相加(路径)

 

代码:

    function getList(data) {
      let result = []
      list(data)
      return result
      function list(a, data = ‘‘) { // a为原始数据,data为不包含此列的路径
        a = [...a] // 数据浅复制
        if (a.length === 1) {
          data += a[0]
          result.push(data) // 当最后一个的时候,把路径push进去
        }
        for (let i = 0; i < a.length; i++) {
          let now = a[i] // 此列选中
          now2 = data // 路径复制,data不可污染,保证此列循环,路径不变
          now2 += now // 从第一列到此列的路径
          let left = a.filter(it => it !== now) // 此列选中剩余的数据
          list(left, now2)
        }
      }
    }
    let data = getList(‘abcdefg‘)
    console.log(data)

 

以上是关于javascript,排列组合的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 代码片段

48个值得掌握的JavaScript代码片段(上)

javascript,排列组合

精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!(转载)

JavaScript 二维数组排列组合2

JavaScript 递归法排列组合二维数组