如何将JavaScript二维数组转换为带递增标识符的对象
将二维数组转换为带递增标识符的对象
你需要把二维数组转换成以person1、person2这类递增字符串为键的单个对象,而不是对象数组。你的map方法会生成对象数组,和目标结构不符,这里可以用reduce方法来实现需求:
实现代码
const formData = [ ["Lisa", "Heinz"], ["Bob", "Sleigh"] ]; const result = formData.reduce((acc, item, index) => { // 生成递增的person键,索引从0开始,所以加1得到1、2... const personKey = `person${index + 1}`; // 给累加器添加对应的键值对 acc[personKey] = { name: item[0], last_name: item[1] }; return acc; }, {}); // 初始化累加器为空对象 console.log(result);
输出结果
运行后会得到符合要求的合法JS对象:
{ person1: { name: 'Lisa', last_name: 'Heinz' }, person2: { name: 'Bob', last_name: 'Sleigh' } }
原理说明
reduce方法会遍历数组的每一项,通过累加器(acc)逐步构建最终的对象。每遍历到一个数组项,就根据当前索引生成对应的personN键,把数组项转换成包含name和last_name的子对象并赋值给这个键,最后返回累加器即可得到目标结构。这种方法可以无限扩展,不管数组有多少项,都会自动生成对应的person键。
内容的提问来源于stack exchange,提问作者Tim Dobson
相关产品推荐
相关产品推荐

