Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将一个数组(对象)划分成特定数量的块,可能使用lodash_Javascript_Lodash - Fatal编程技术网

Javascript 如何将一个数组(对象)划分成特定数量的块,可能使用lodash

Javascript 如何将一个数组(对象)划分成特定数量的块,可能使用lodash,javascript,lodash,Javascript,Lodash,我试了两种方法,但没有得到预期的结果 假设我有这样的对象数组: var users = [ { 'user': 'barney', 'age': 36, 'active': false }, { 'user': 'fred', 'age': 40, 'active': true }, ... and so on (n lenght) ... ]; 我想把他们分成两三组。如果我有100个对象,并且我希望将它们分成3组,那么第一组和第二组的结果应该包含33个对象,最后一组应该包含3

我试了两种方法,但没有得到预期的结果

假设我有这样的对象数组:

var users = [
  { 'user': 'barney', 'age': 36, 'active': false },
  { 'user': 'fred',   'age': 40, 'active': true },
  ... and so on (n lenght) ...
];
我想把他们分成两三组。如果我有100个对象,并且我希望将它们分成3组,那么第一组和第二组的结果应该包含33个对象,最后一组应该包含34个对象(或者以任何其他可能的方式分布剩余对象)

我试着使用lodash的区块,但结果完全不同:)

编辑了我的问题以解释更多内容。

var my arrayOfObj = [1,2,3,4,5,6,7,8,9,10]
myArray.dividThemIn(3) // when run this, I am getting chunks like below
[{1,2,3}, {4,5,6}, {7,8,9}, {10}] // I am finding code that does this
[{1,2,3,4}, {5,6,7,8}, {9,10}] // But I need the code that does this

如果你只想把他们分成3组,没有任何标准

function splitIntoThree(arr){
  let result = [[],[],[]],
      thirds = Math.ceil(arr.length/3);

  arr.forEach((obj,index) => {
    if(index < thirds){
      result[0].push(obj);
    } else if(index < 2*thirds) {
      result[1].push(obj);
    } else {
      result[2].push(obj);
    }
  });

  return result;
}
功能拆分为三(arr){
让结果=[],[],[],
三分之一=数学单元(arr.length/3);
arr.forEach((对象,索引)=>{
如果(指数<三分之一){
结果[0]。推送(obj);
}否则如果(指数<2*3){
结果[1]。推送(obj);
}否则{
结果[2]。推送(obj);
}
});
返回结果;
}

将数组的长度除以所需的块数(四舍五入),并将其作为第二个参数传递到
.chunk

var arrayOfObj = [1,2,3,4,5,6,7,8,9,10];
var chunks = _.chunk(arrayOfObj, Math.ceil(arrayOfObj.length / 3));
console.log(JSON.stringify(chunks)); //[[1,2,3,4],[5,6,7,8],[9,10]] 

你可以用这样的东西

function chunk (arr, chunks) {
    var chunked = [];
    var itemsPerChunk = Math.ceil(arr.length / chunks);

    while (arr.length > 0) {
        chunked.push(arr.slice(0, itemsPerChunk));
    }

    return chunked;
}

var data = [1,2,3,4,5,6,7,8,9,10];

chunk(data, 3);
// [[1,2,3,4], [5,6,7,8], [9,10]]

可能的副本请在询问之前做一些研究。。这个问题至少有几处重复。@Occam'sRazor,我做过研究,要么我做错了什么,要么我运气不好,没有得到想要的。总之,编辑我的问题来解释更多内容,请看一看。@GeorgeJempty-这怎么会比分块数组更重要呢?据我所知,这是一模一样的。。它提供了确切的要求结果也许如果我知道lodash块函数的作用,我会更好地理解这个问题
function chunk (arr, chunks) {
    var chunked = [];
    var itemsPerChunk = Math.ceil(arr.length / chunks);

    while (arr.length > 0) {
        chunked.push(arr.slice(0, itemsPerChunk));
    }

    return chunked;
}

var data = [1,2,3,4,5,6,7,8,9,10];

chunk(data, 3);
// [[1,2,3,4], [5,6,7,8], [9,10]]