2016-09-29 8 views
0

countries.jsonを取得しました。これは仕様ごとに4列に表示されます。lodashを使用して配列を均等にチャンクします。

私は、配列要素が4つの配列すべてに均等に分配されるソリューションを検討しています。

サンプルJSFIDDLEhttps://jsfiddle.net/5tkjLs7b/

私はJSONデータから一つの国を削除する場合は、私が終わるアップします6つのアレイで。しかし、予想されるのは4つの配列だけです。

また、データは均等に分散する必要があります。

例: country.jsonの場合、63個のアイテム* 4個のアレイ+ 3個のアイテム* 1個の配列を取得しています。

var countries = [ 
    {"name": "Afghanistan", "code": "AF"}, 
    {"name": "Åland Islands", "code": "AX"}, 
    {"name": "Albania", "code": "AL"}, 
    {"name": "Algeria", "code": "DZ"}, 
    {"name": "American Samoa", "code": "AS"}, 
    {"name": "AndorrA", "code": "AD"}, 
    {"name": "Angola", "code": "AO"}, 
    {"name": "Anguilla", "code": "AI"}, 
    {"name": "Antarctica", "code": "AQ"}, 
    {"name": "Antigua and Barbuda", "code": "AG"}, 
    {"name": "Argentina", "code": "AR"}, 
    {"name": "Armenia", "code": "AM"}]; 

    chunkedCountries = _.chunk(countries, countries.length/4) 
    console.log(chunkedCountries); 

答えて

1

あなたは望ましい結果を得るためにforループとslice()を使用することができます。

var countries = [ 
 
    {"name": "Afghanistan", "code": "AF"}, 
 
    {"name": "Åland Islands", "code": "AX"}, 
 
    {"name": "Albania", "code": "AL"}, 
 
    {"name": "Algeria", "code": "DZ"}, 
 
    {"name": "American Samoa", "code": "AS"}, 
 
    {"name": "AndorrA", "code": "AD"}, 
 
    {"name": "Angola", "code": "AO"}, 
 
    {"name": "Anguilla", "code": "AI"}, 
 
    {"name": "Antarctica", "code": "AQ"}, 
 
    {"name": "Antigua and Barbuda", "code": "AG"}, 
 
    {"name": "Argentina", "code": "AR"}, 
 
    {"name": "Armenia", "code": "AM"}]; 
 

 

 
var c = countries.length/4; 
 
var result = []; 
 

 
for(var i = 0; i < countries.length; i+=c) { 
 
    result.push(countries.slice(i, i+c)); 
 
} 
 

 
console.log(result)

関連する問題