简体   繁体   English

使用lodash将数组平均分块

[英]Evenly chunk an array using lodash

I got countries.json which I am chunking to display in 4 columns as per specification. countries.json这我分块中4列,按规格来显示。

I am looking at a solution where the array elements are evenly distributed to all four arrays. 我正在寻找一种将数组元素均匀分布到所有四个数组的解决方案。

Sample JSFIDDLE https://jsfiddle.net/5tkjLs7b/ 样本JSFIDDLE https://jsfiddle.net/5tkjLs7b/

If I remove one country from the json data, I will end-up with 6 arrays. 如果我从json数据中删除一个国家/地区,则最终会得到6个数组。 But the expected is only 4 arrays. 但预期只有4个阵列。

Also the data should be evenly distributed. 此外,数据应均匀分布。

Example : I am getting 63 items*4 arrays + 3 items*1 array for full country.json. 例子:我得到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);

You can use for loop and slice() to get desired result. 您可以使用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) 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM