如何将包含3个数组的数组转换为带对象变量的大数组
嗨!别担心重复提问的事儿,新手阶段摸不清方向太正常啦~先给你直接上解决方案,要是对你有用,记得回来删帖就好😊
解决方案:将包含多数组的数组转换为对象数组
首先我先假设你的输入和期望输出是这样的(如果和实际不符,你可以补充细节我再调整):
示例输入
// 包含3个数组的数组,每个子数组对应一个字段的所有值 const input = [ ['Alice', 'Bob', 'Charlie'], // 对应name字段 [25, 30, 35], // 对应age字段 ['Engineer', 'Designer', 'Manager'] // 对应job字段 ];
期望输出
// 单个大数组,每个元素是包含对应字段的对象 const output = [ { name: 'Alice', age: 25, job: 'Engineer' }, { name: 'Bob', age: 30, job: 'Designer' }, { name: 'Charlie', age: 35, job: 'Manager' } ];
接下来给你两种常用的实现方式:
方法一:固定字段直接映射(简单直观)
如果你的三个子数组对应的字段是固定的,直接用map循环第一个数组的元素,按索引取每个子数组对应位置的值构建对象就行:
const input = [ ['Alice', 'Bob', 'Charlie'], [25, 30, 35], ['Engineer', 'Designer', 'Manager'] ]; const output = input[0].map((_, index) => ({ name: input[0][index], age: input[1][index], job: input[2][index] })); console.log(output); // 就能得到期望的对象数组啦
方法二:通用动态处理(适配更多场景)
如果你的字段名需要动态定义,或者子数组的数量可能变化,可以先定义字段名数组,再用reduce动态构建对象,扩展性更强:
const input = [ ['Alice', 'Bob', 'Charlie'], [25, 30, 35], ['Engineer', 'Designer', 'Manager'] ]; // 字段名顺序要和子数组的顺序对应哦 const fieldNames = ['name', 'age', 'job']; const output = input[0].map((_, index) => { return fieldNames.reduce((obj, field, fieldIndex) => { obj[field] = input[fieldIndex][index]; return obj; }, {}); }); console.log(output);
要是你的输入结构和我假设的不一样,比如子数组长度不一致,或者字段名不同,随时补充细节我再帮你调整~
内容的提问来源于stack exchange,提问作者Cedric Hadjian
相关产品推荐
相关产品推荐

