2017-04-06 67 views
0

'arr'數組是根據用戶輸入動態創建的,因此其內容在正常運行的版本中發生更改。用戶輸入可以是任意長度,因此可能不一定包含5個單詞。問題是,我不確定如何動態創建words對象,使其具有不同數量的子項,以便將其推送到combos的正確成員。JQuery:將不同長度的動態分配對象推送到對象

var arr = [ 
 
    [ 
 
    ["this", 0], 
 
    ["is", 1], 
 
    ["a", 2], 
 
    ["complete", 3], 
 
    ["sentence", 4], 
 
    ["with", 5], 
 
    ["index", 6], 
 
    ["data", 7] 
 
    ] 
 
]; 
 

 
var partOne = { 
 
    two: [], 
 
    three: [], 
 
    four: [], 
 
    five: [] 
 
} 
 

 
var len = arr.length; 
 

 
var print = []; 
 

 
for (var i = 0; i < len; i++) { 
 
    var lenGr = arr[i].length; 
 
    for (var j = 0; j < lenGr - 1; j++) { 
 
    partOne.two.push({ 
 
     "words": { 
 
     "word1": arr[i][j], 
 
     "word2": arr[i][j + 1] 
 
     } 
 
    }); 
 
    } 
 
    for (j = 0; j < lenGr - 2; j++) { 
 
    partOne.three.push({ 
 
     "words": { 
 
     "word1": arr[i][j], 
 
     "word2": arr[i][j + 1], 
 
     "word3": arr[i][j + 2] 
 
     } 
 
    }); 
 
    } 
 
    for (j = 0; j < lenGr - 3; j++) { 
 
    partOne.four.push({ 
 
     "words": { 
 
     "word1": arr[i][j], 
 
     "word2": arr[i][j + 1], 
 
     "word3": arr[i][j + 2], 
 
     "word4": arr[i][j + 3] 
 
     } 
 
    }); 
 
    } 
 
    for (j = 0; j < lenGr - 4; j++) { 
 
    partOne.five.push({ 
 
     "words": { 
 
     "word1": arr[i][j], 
 
     "word2": arr[i][j + 1], 
 
     "word3": arr[i][j + 2], 
 
     "word4": arr[i][j + 3], 
 
     "word5": arr[i][j + 4] 
 
     } 
 
    }); 
 
    } 
 
} 
 

 
console.log("Current solution : "); 
 
console.log(partOne); 
 

 
var partTwo = { 
 
    two: [], 
 
    three: [], 
 
    four: [], 
 
    five: [] 
 
}; 
 
for (i = 0; i < len; i++) { 
 
    var lenGr = arr[i].length; 
 
    $.each(partTwo, function(ind, val) { 
 
    for (var j = 1; j < 4; j++) { 
 
     for (var k = 0; k < lenGr - j; k++) { 
 
     // Populate 'partTwo' dynamically, in the same format as partOne. 
 
     } 
 
    } 
 
    }); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+2

那是你實際的數組定義是什麼?它的語法完全被破壞了。 –

+2

請點擊''''''片段編輯器並創建一個[mcve] – mplungjan

+1

您的第一個'var arr = [0 = [0 = [「this」,0],1 = [「is」,1],2 = [ 3 = [「complete」,3],4 = [「sentence」,4],5 = [「with」,5],6 = [「index」,6],7 = [「 「數據」,7]]];'已無效的語法 – gurvinder372

回答

0

我已經簡單地提供它,以便確定該迭代期間計數陣列成員的數量監視j switch語句,然後重複該原始代碼推新對象插入partTwo。可能有更優雅的解決方案。

var arr = [ 
 
    [ 
 
    ["this", 0], 
 
    ["is", 1], 
 
    ["a", 2], 
 
    ["complete", 3], 
 
    ["sentence", 4], 
 
    ["with", 5], 
 
    ["index", 6], 
 
    ["data", 7] 
 
    ] 
 
]; 
 

 
var partTwo = { 
 
    two: [], 
 
    three: [], 
 
    four: [], 
 
    five: [] 
 
}; 
 

 
var len = arr.length; 
 

 
for (i = 0; i < len; i++) { 
 
    var lenGr = arr[i].length; 
 
    for (var j = 1; j < 5; j++) { 
 
    for (var k = 0; k < lenGr - j; k++) { 
 
     switch (j) { 
 
     case 1: 
 
      partTwo.two.push({ 
 
      "words": { 
 
       "word1": arr[i][k], 
 
       "word2": arr[i][k + 1] 
 
      } 
 
      }); 
 
      break; 
 
     case 2: 
 
      partTwo.three.push({ 
 
      "words": { 
 
       "word1": arr[i][k], 
 
       "word2": arr[i][k + 1], 
 
       "word3": arr[i][k + 2] 
 
      } 
 
      }); 
 
      break; 
 
     case 3: 
 
      partTwo.four.push({ 
 
      "words": { 
 
       "word1": arr[i][k], 
 
       "word2": arr[i][k + 1], 
 
       "word3": arr[i][k + 2], 
 
       "word4": arr[i][k + 3] 
 
      } 
 
      }); 
 
      break; 
 
     case 4: 
 
      partTwo.five.push({ 
 
      "words": { 
 
       "word1": arr[i][k], 
 
       "word2": arr[i][k + 1], 
 
       "word3": arr[i][k + 2], 
 
       "word4": arr[i][k + 3], 
 
       "word5": arr[i][k + 4] 
 
      } 
 
      }); 
 
      break; 
 
     default: 
 
      console.log("Error with j switch."); 
 
     } 
 
    } 
 
    } 
 
} 
 
console.log(partTwo);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>