Равномерно lodash массив с помощью lodash

#javascript #arrays #lodash

#javascript #массивы #lodash

Вопрос:

Я получил countries.json , что я разбиваю на 4 столбца для отображения в соответствии со спецификацией.

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

Пример JSFIDDLE https://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)