2016-09-29 3 views
0

chunk Ich habe countries.json, die ich in 4 Spalten Chunking nach Spezifikation angeben.Gleichmäßig ein Array mit lodash

Ich suche eine Lösung, bei der die Array-Elemente gleichmäßig auf alle vier Arrays verteilt sind.

Probe JSFIDDLEhttps://jsfiddle.net/5tkjLs7b/

Wenn ich ein Land von den JSON-Daten zu entfernen, werde ich mit 6 Arrays Ende-up. Aber das erwartet wird nur 4 Arrays.

Auch die Daten sollten gleichmäßig verteilt werden.

Beispiel: Ich bekomme 63 Elemente * 4 Arrays + 3 Elemente * 1 Array für volle country.json.

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); 

Antwort

1

Sie for Schleife und slice() verwenden können, um gewünschte Ergebnis zu erhalten.

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)