如何在JavaScript中将含单个对象的数组拆分为多对象数组
实现数组对象拆分方案
可以通过以下JavaScript代码实现需求:
const originalArray = [{ "0key1": "a33", "0key2": "Aab", "0key3": "i", "1key1": "e78", "1key2": "Vib", "1key3": "j", "2key1": "c99", "2key2": "Aig", "2key3": "k" }]; // 取出原数组中的单个对象 const originalObj = originalArray[0]; // 存储分组后的结果 const result = []; // 遍历对象的所有键 Object.keys(originalObj).forEach(key => { // 提取键的数字前缀(如"0key1"中的"0") const prefix = key.match(/^\d+/)[0]; // 检查结果数组中是否已有对应前缀的对象 let targetObj = result.find(item => Object.keys(item)[0].startsWith(prefix)); if (!targetObj) { // 无对应对象则新建并推入结果数组 targetObj = {}; result.push(targetObj); } // 将当前键值对添加到目标对象 targetObj[key] = originalObj[key]; }); console.log(result);
代码说明:
- 先从原数组中取出唯一的对象作为操作主体。
- 通过
Object.keys()获取对象所有键,遍历每个键时提取开头的数字前缀。 - 检查结果数组中是否存在以该前缀开头的对象,不存在则创建新对象加入数组。
- 将当前键值对添加到对应前缀的对象中,最终得到分组后的目标数组。
运行代码后输出结果如下:
[ {"0key1":"a33","0key2":"Aab","0key3":"i"}, {"1key1":"e78","1key2":"Vib","1key3":"j"}, {"2key1":"c99","2key2":"Aig","2key3":"k"} ]
内容的提问来源于stack exchange,提问作者Abednego Nasila
相关产品推荐
相关产品推荐

