Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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 根据属性将数组拆分为不同大小的块_Javascript_Arrays - Fatal编程技术网

Javascript 根据属性将数组拆分为不同大小的块

Javascript 根据属性将数组拆分为不同大小的块,javascript,arrays,Javascript,Arrays,我有以下数组 var array=[{ semster:1, name:Book1 }, { semster:1, name:Book2 }, { semster:2, name:Book4 }, { semster:3, name:Book5 }, { semster:3, name:Book6 }, { semster:4, name:Book7 }] 现在我想对数组进行排序,将当前数组拆分为数组块,如下所示 var array=[[{ semster:1, name:Book1 }, {

我有以下数组

var array=[{ semster:1, name:Book1 }, { semster:1, name:Book2 }, { semster:2, name:Book4 }, { semster:3, name:Book5 }, { semster:3, name:Book6 }, { semster:4, name:Book7 }]
现在我想对数组进行排序,将当前数组拆分为数组块,如下所示

var array=[[{ semster:1, name:Book1 }, { semster:1, name:Book2 }],[ { semster:2, name:Book4 }], [{ semster:3, name:Book5 }, { semster:3, name:Book6 }], [{ semster:4, name:Book7 }]]
我已尝试通过以下代码实现这一点:

function splitIntoSubArray(arr, count) {
  var newArray = [];
  while (arr.length > 0) {
    newArray.push(arr.splice(0, count)); 
  }
  return newArray;
}
但这只能在固定大小的基础上划分数组。欢迎提出任何建议


谢谢

您可以通过使用同一学期检查最后一组来减少数组

var数组=[{学期:1,名称:'Book1'},{学期:1,名称:'Book2'},{学期:2,名称:'Book4'},{学期:3,名称:'Book5'},{学期:3,名称:'Book6'},{学期:4,名称:'Book7'},
分组=数组。减少((r,o)=>{
var last=r[r.长度-1];
如果(最后一个和最后一个[0]。学期===o.Serment){
最后,推(o);
}否则{
r、 推挤([o]);
}
返回r;
}, []);
控制台日志(分组)

。作为控制台包装{max height:100%!important;top:0;}
您只需使用
Array.reduce()
按学期对项目进行分组即可<地图上的code>Object.values()
为您提供所需的结果

var数组=[{semster:1,名称:“Book1”},{semster:1,名称:“Book2”},{semster:2,名称:“Book4”},{semster:3,名称:“Book5”},{semster:3,名称:“Book6”},{semster:4,名称:“Book7”};
var result=Object.values(数组.reduce((a,curr)=>{
(a[当前状态]=a[当前状态]| |[])。推动(当前);
返回a;
},{}));

控制台日志(结果)
数据总是按学期排序吗?@NinaScholz是的,你想根据每个对象的值分割数组吗?如果有一个对象,其中学期是键,值是一个书籍数组,不是更好吗?