2017-06-21 1 views
1

このようないくつかの他の質問がありますが、このすべての質問に対してソートキーは知られています。値がいつ変更されるかによって、配列をより小さな配列に分割してください

ここに私の問題があります。 このテストクラスを考えてみましょう:私はarray of Test's f.e.を持っているとき

class Test{ 
    constructor(){ 
     this.value1 = val1; 
     this.value2 = val2; 
     this.value3 = val3; 
    } 

、ここではそう

function compare(a,b){ 
    if(a.value3 < b.value3){ 
     return -1; 
    if(a.value3 > b.value3){ 
     return 1; 
    return 0 
} 

機能を比較していますsize 50 このようにこの配列をソートします。

arrayOfTest.sort(compare) 

value3でソートされた配列が返されます。今私は、この大きな配列をいくつかの小さなものに分割したいと思います。

arrayOfTest=[a = Test(value3 = 3),b = Test(value3 = 3),c = Test(value3 = 4)] 

array1 = [a = Test(value3 = 3),b = Test(value3 = 3)] 

array3 = [c = Test(value3 = 4)] 

答えて

1

に(最初にソートすることなく)シングルパスであなたの目標を達成するための可能な方法を分割する必要があります。したがって、たとえば 次のスニペットのように、特定のキーでグループ化することができます。

var groupBy = function(xs, key) { 
    return xs.reduce(function(rv, x) { 
    (rv[x[key]] = rv[x[key]] || []).push(x); 
    return rv; 
    }, {}); 
}; 
// groupBy(arrayOfTest, 'value3') 
関連する問題