如何在JavaScript中将对象数组转换为以platform为键的新对象
把数组形式的posters转为指定键值对对象的实现方法
首先注意你提供的原数据有个小问题:platform的取值(facebook、instagram)需要用字符串引号包裹,不然会被JS当作未定义的变量处理,修正后的原数据应该是这样:
const posters = [ { platform: "facebook", name: ["user test1","user test2"] }, { platform: "instagram", name: ["Ig test1","Ig test2"] }, ];
下面是几种可行的实现方式:
方法1:使用Array.reduce(最常用)
reduce方法可以直接遍历数组并构建目标对象,逻辑清晰且高效:
const transformedPosters = posters.reduce((acc, item) => { acc[item.platform] = item.name; return acc; }, {}); console.log(transformedPosters); // 输出:{ facebook: ["user test1","user test2"], instagram: ["Ig test1","Ig test2"] }
方法2:使用Object.fromEntries(ES2019+ 简洁写法)
如果你的运行环境支持ES2019及以上,可以用这个更简洁的写法,先把数组转成[键, 值]的二维数组,再直接转为对象:
const transformedPosters = Object.fromEntries( posters.map(item => [item.platform, item.name]) ); console.log(transformedPosters); // 输出同上
方法3:使用forEach循环(直观易懂)
如果是初学者,forEach的写法更直观,容易理解:
const transformedPosters = {}; posters.forEach(item => { transformedPosters[item.platform] = item.name; }); console.log(transformedPosters); // 输出同上
内容的提问来源于stack exchange,提问作者Thanatcha pitithadakul
相关产品推荐
相关产品推荐

