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);
我想分块关联数组。给定数组的每一项都包含有关员工的信息。
给定数组,
// 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 个员工信息,输出将是,
您拥有的是对象,而不是数组。您可以在该数组上使用 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);