javascript 中每 3 个键分块一个对象

Chunk an object for every 3 keys in javascript

我想分块关联数组。给定数组的每一项都包含有关员工的信息。

给定数组,

// given array

var arr = {
  "00B065011K": {
    "salary": "35900",
    "date": "2020-12-01"
  },
  "00B101794N": {
    "salary": "8308",
    "date": "2020-12-01"
  },
  "00C100365N": {
    "salary": "28400",
    "date": "2020-12-01"
  },
  "00D100179N": {
    "salary": "8308",
    "date": "2020-12-01"
  },
  "00D100192N": {
    "salary": "8308",
    "date": "2020-12-01"
  },
  "00E101558N": {
    "salary": "10245",
    "date": "2020-12-01"
  },
  "00F100529N": {
    "salary": "10245",
    "date": "2020-12-01",
  },
  "00F100543N": {
    "salary": "10245",
    "date": "2020-12-01"
  },
  "00G100121N": {
    "salary": "8618",
    "date": "2020-12-01"
  },
};

我希望每个块有 3 个员工信息,输出将是,

我已经尝试 Split array into chunks 但没有得到预期的输出。

您拥有的是对象,而不是数组。您可以在该数组上使用 Object.keys to get the keys of your object in an array, then you can use Array.reduce 将您的对象分块为较小对象的数组(每个对象具有 chunksize 属性):

var obj = {
  "00B065011K": { "salary": "35900", "date": "2020-12-01" },
  "00B101794N": { "salary": "8308", "date": "2020-12-01" },
  "00C100365N": { "salary": "28400", "date": "2020-12-01" },
  "00D100179N": { "salary": "8308", "date": "2020-12-01" },
  "00D100192N": { "salary": "8308", "date": "2020-12-01" },
  "00E101558N": { "salary": "10245", "date": "2020-12-01" },
  "00F100529N": { "salary": "10245", "date": "2020-12-01", },
  "00F100543N": { "salary": "10245", "date": "2020-12-01" },
  "00G100121N": { "salary": "8618", "date": "2020-12-01" },
};

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);