2017-03-02 41 views
4

我有一个大数组,例如aa=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]如何根据给定的索引值将大数组拆分为更小的数组,

我有另一个阵列保持基于索引值在其大阵列需要被分块。例如cc=[10,16]

我想要那个阵列AA将被组块到新的阵列

DD [] = [从0到cc [0]索引]

EE [] = [从CC [0]索引到cc [下一个值]索引]

dd[] = [1,2,3,4,5,6,7,8,9,10] 
ee[] = [11,12,13,14,15,16] 

等等,直到cc[]有索引

我找不出逻辑,如果有人能帮助我。

回答

6

你可以使用Array#mapArray#slice的部分。

var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], 
 
    indices = [10, 16], 
 
    result = indices.map(function (a, i, aa) { 
 
     return array.slice(aa[i - 1] || 0, a); 
 
    }); 
 
    
 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

有这么多的正确答案,它难以选择之一。希望我能标出所有。 – raju

2

您可以使用新的和简单的array.slice:

var array=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]; 
 
    var i,j,temparray,chunk = 10; 
 
    for (i=0,j=array.length; i<j; i+=chunk) { 
 
     temparray = array.slice(i,i+chunk); 
 
     console.info(temparray); 
 
    }

1

你可以做这样的事情,如果你不想使用建立方法。

function createChunks(aa, cc) { 
 
    var temp = [], chunks = []; 
 
    for(var i=0, j=0, k=0; i<aa.length; i++) { 
 
     if(aa[i] == cc[j]) { 
 
      temp[k] = aa[i]; 
 
      chunks.push(temp); 
 
      temp = []; k=0; j++; 
 
     } 
 
     else 
 
      temp[k++] = aa[i]; 
 
    } 
 
    return chunks; 
 
} 
 

 

 
var aa=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16], cc=[10, 16]; 
 

 
var chunks = createChunks(aa, cc); 
 
console.log(JSON.stringify(chunks));

相关问题