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是的,你想根据每个对象的值分割数组吗?如果有一个对象,其中学期是键,值是一个书籍数组,不是更好吗?