亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

查找JavaScript數組值的所有組合

查找JavaScript數組值的所有組合

查找JavaScript數組值的所有組合如何在N個可變長度的JavaScript數組中生成所有值的組合?假設我有N個JavaScript數組,例如var first = ['a', 'b', 'c', 'd'];var second = ['e'];var third =  ['f', 'g', 'h', 'i', 'j'];(在這個例子中有三個數組,但它有N個數組用于解決問題。)我想輸出它們的所有值的組合,以產生aef aeg aeh aei aej bef beg....dej編輯:這是我工作的版本,使用ffriend接受的答案作為基礎。var allArrays = [['a', 'b'], ['c', 'z'], ['d', 'e', 'f']];  function allPossibleCases(arr) {   if (arr.length === 0) {     return [];   } else if (arr.length ===1){return arr[0];}else {     var result = [];     var allCasesOfRest = allPossibleCases(arr.slice(1));  // recur with the rest of array     for (var c in allCasesOfRest) {       for (var i = 0; i < arr[0].length; i++) {         result.push(arr[0][i] + allCasesOfRest[c]);       }     }     return result;   }}var r=allPossibleCases(allArrays);  //outputs ["acd", "bcd", "azd", "bzd", "ace", "bce", "aze", "bze", "acf", "bcf", "azf", "bzf"]
查看完整描述

3 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

這不是排列,請參閱維基百科的排列定義

但是你可以通過遞歸來實現這個目的:

var allArrays = [['a', 'b'], ['c'], ['d', 'e', 'f']]function allPossibleCases(arr) {
  if (arr.length == 1) {
    return arr[0];
  } else {
    var result = [];
    var allCasesOfRest = allPossibleCases(arr.slice(1));  // recur with the rest of array
    for (var i = 0; i < allCasesOfRest.length; i++) {
      for (var j = 0; j < arr[0].length; j++) {
        result.push(arr[0][j] + allCasesOfRest[i]);
      }
    }
    return result;
  }}

你也可以使用循環來實現它,但它會有點棘手,需要實現你自己的堆棧模擬。


查看完整回答
反對 回復 2019-07-30
  • 3 回答
  • 0 關注
  • 969 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號