2017-08-01 16 views
-1

我有下面列出的四個陣列。第一個數組包含一系列需要移動到其餘三個數組之一中的項目。如何從一個數組中移動一個數組中的項目,具體取決於它有多少個項目?

三個「托盤」最多可容納5個物品,所以一旦達到trayOne的限制,應將物品添加到trayTwo等等。

完成此操作的最佳方法是什麼?

JS

var job = ['one', 'two', 'three', 'four', 'five', 'six', 'seven']; 

var trayOne = []; 
var trayTwo = []; 
var trayThree = []; 
+0

我們希望你嘗試,並顯示你試過什麼 - 這不是一個代碼編寫服務 –

+1

您可以用[Array.slice文檔鏈接(HTTPS嘗試://開發商.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/slice)如果你有固定大小的數組..試試看,並在這裏分享你的結果.. – Kaddath

回答

0
var result = []; 
job.forEach(
    (el,i)=>(result[~~(i/5)]=result[~~(i/5)] || []).push(el) 
); 

只需創建一個二維陣列,分配各作業給它。 如果youre想知道這一點:

~~(i/5) 

,將返回0,對於i = 0,1,2,3,4,1 6,7,8,9,10 ......

現在你可以很容易的做到:

var trayOne = result[0]; 
0

你可以收集一個數組中的單個結果數組,然後指定塊。

var job = ['one', 'two', 'three', 'four', 'five', 'six', 'seven'], 
 
    trayOne = [], 
 
    trayTwo = [], 
 
    trayThree = [], 
 
    result = [trayOne, trayTwo, trayThree], 
 
    i = 0, 
 
    chunk = 3; // just for example 
 
    
 
while (i * chunk < job.length) { 
 
    [].push.apply(result[i], job.slice(i * chunk, (i + 1) * chunk)); 
 
    i++; 
 
} 
 

 
console.log(trayOne); 
 
console.log(trayTwo); 
 
console.log(trayThree);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

只是盲目的打字危險。 –

相關問題