【问题标题】:Chunk an object for every 3 keys in javascript [duplicate]在javascript中为每3个键分块一个对象[重复]
【发布时间】:2020-12-19 11:20:00
【问题描述】:

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

给定数组,

// 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,但没有得到预期的输出。

【问题讨论】:

  • 那不是数组; JavaScript 没有“关联数组”类型。你得到的是一个普通的对象。

标签: javascript arrays chunks


【解决方案1】:

你拥有的是一个对象,而不是一个数组。您可以使用Object.keys 在数组中获取对象的键,然后您可以在该数组上使用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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2011-03-18
    • 2021-04-24
    • 1970-01-01
    相关资源
    最近更新 更多