如何在JavaScript中按每3个键对关联数组进行分块处理
如何将员工信息的JS对象按每3条分块处理?
嘿,我懂你碰到的问题了——你定义的arr其实不是一个数组,而是一个JavaScript键值对对象,普通的数组分块方法肯定没法直接生效,这就是你之前尝试没得到预期结果的原因!
别着急,我们可以通过以下几步来实现你要的分块效果:
步骤1:把对象转换为可迭代的数组结构
首先,我们需要把对象的键值对转换成数组形式,用Object.entries()方法就能做到,它会返回一个二维数组,每个子数组包含[员工ID, 对应信息]:
const 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" }, }; // 转换为键值对数组 const employeeEntries = Object.entries(arr);
步骤2:编写分块函数处理数组
接下来我们写一个通用的分块函数,把数组按指定大小拆分:
function chunkArray(arr, chunkSize) { const result = []; // 循环遍历,每次跳chunkSize个元素 for (let i = 0; i < arr.length; i += chunkSize) { // 截取从i到i+chunkSize的子数组,加入结果 result.push(arr.slice(i, i + chunkSize)); } return result; } // 调用函数,每3条员工信息分一块 const chunkedEntries = chunkArray(employeeEntries, 3);
步骤3:可选——把分块转回对象形式
如果你希望分块后的结果还是对象格式,可以用Object.fromEntries()把每个分块的数组转回键值对对象:
const chunkedObjects = chunkedEntries.map(chunk => Object.fromEntries(chunk));
现在你可以打印chunkedObjects看看结果,它会是一个包含3个对象的数组,每个对象里正好有3条员工信息~
举个例子,第一个分块对象会是:
{ "00B065011K": { "salary": "35900", "date": "2020-12-01" }, "00B101794N": { "salary": "8308", "date": "2020-12-01" }, "00C100365N": { "salary": "28400", "date": "2020-12-01" } }
这样就完美实现了你要的分块需求啦!
内容的提问来源于stack exchange,提问作者Rakibul Islam
相关产品推荐
相关产品推荐

