问题描述
我想对关联数组进行分块。给定数组的每一项都包含有关员工的信息。
给定数组,
// given array
var arr = {
"00B065011K": {
"salary": "35900","date": "2020-12-01"
},"00B101794N": {
"salary": "8308","00C100365N": {
"salary": "28400","00D100179N": {
"salary": "8308","00D100192N": {
"salary": "8308","00E101558N": {
"salary": "10245","00F100529N": {
"salary": "10245","date": "2020-12-01",},"00F100543N": {
"salary": "10245","00G100121N": {
"salary": "8618",};
我想要每个块有 3 个员工信息,输出将是,
我试过 Split array into chunks 但没有得到预期的输出。
解决方法
你拥有的是一个对象,而不是一个数组。您可以使用 Object.keys
获取数组中对象的键,然后您可以在该数组上使用 Array.reduce
将您的对象分块为一组较小的对象(每个对象都具有 chunksize
属性):
var obj = {
"00B065011K": { "salary": "35900","date": "2020-12-01" },"00B101794N": { "salary": "8308","00C100365N": { "salary": "28400","00D100179N": { "salary": "8308","00D100192N": { "salary": "8308","00E101558N": { "salary": "10245","00F100529N": { "salary": "10245","date": "2020-12-01",},"00F100543N": { "salary": "10245","00G100121N": { "salary": "8618",};
const chunksize = 3;
const output = Object.keys(obj).reduce((c,k,i) => {
if (i % chunksize == 0) {
c.push(Object.fromEntries([[k,obj[k]]]));
} else {
c[c.length - 1][k] = obj[k];
}
return c;
},[]);
console.log(output);