微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在javascript中为每3个键分块一个对象

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

给定数组,

// 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 个员工信息,输出将是,

enter image description here

我试过 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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。