2016-09-29 4 views
0

Я получил countries.json, который я разбиваю на 4 столбца согласно спецификации.Уравновешенный массив с использованием lodash

Я рассматриваю решение, в котором элементы массива равномерно распределены по всем четырем массивам.

Образец JSFIDDLEhttps://jsfiddle.net/5tkjLs7b/

Если удалить одну страну из данных JSon, я закончу, с 6 массивов. Но ожидается, что всего 4 массива.

Также данные должны быть равномерно распределены.

Пример: Я получаю 63 элемента * 4 массива + 3 элемента * 1 массив для полного 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); 

ответ

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)

Смежные вопросы