如何将嵌套数组转换为指定结构的对象?
实现嵌套数组转指定结构对象的几种方法
嘿,这需求很容易实现,我给你几个实用的方案,你可以按需选择:
方法一:forEach循环(直观易懂,适合新手)
这种方式逻辑最直白,遍历原数组的同时给目标对象添加属性:
var array = [["k001" , "water bottle", 5] , ["k002" , "doll" , 7] , ["k003" , "lollipop" , 2] ]; const products = {}; // 遍历数组,index从0开始,所以加1得到item1、item2... array.forEach((item, index) => { products[`item${index + 1}`] = item; }); console.log(products); // 输出:{ item1: ["k001", "water bottle", 5], item2: ["k002", "doll", 7], item3: ["k003", "lollipop", 2] }
方法二:reduce方法(简洁的函数式风格)
如果你喜欢更紧凑的写法,reduce可以一步完成对象的构建:
var array = [["k001" , "water bottle", 5] , ["k002" , "doll" , 7] , ["k003" , "lollipop" , 2] ]; const products = array.reduce((result, currentItem, index) => { result[`item${index + 1}`] = currentItem; return result; }, {}); // 初始值是空对象 console.log(products);
方法三:Object.fromEntries(ES2019+ 一行搞定)
如果你的运行环境支持ES2019及以上版本,可以用这个更简洁的写法:
var array = [["k001" , "water bottle", 5] , ["k002" , "doll" , 7] , ["k003" , "lollipop" , 2] ]; const products = Object.fromEntries( array.map((item, index) => [`item${index + 1}`, item]) ); console.log(products);
原理是先把原数组映射成[键名, 对应值]的二维数组,再用Object.fromEntries直接转换成目标对象。
这三种方法都能完美得到你想要的products结构,随便挑一种用就行~
内容的提问来源于stack exchange,提问作者NoobCoder254
相关产品推荐
相关产品推荐

