如何在JavaScript中将数组的键替换为对象的id值?
如何将数组元素的索引替换为对象的id值?
嘿,我来帮你解决这个问题~首先得明确一点:数组的索引是没办法直接改成你想要的那些id值的,因为数组的索引必须是从0开始的连续整数。所以咱们的思路是把这个数组转换成一个以id为键的对象,这样就能实现你要的「键对应每个对象id」的效果啦。
下面给你两种常用的实现方式:
方法一:使用reduce方法(简洁高效)
reduce是数组的高阶方法,非常适合这种把数组转换成对象的场景:
const clubs = [ {id: 3, name : 'chelsea'}, {id: 6, name : 'city'}, {id: 7, name : 'liverpool'}, {id: 10, name : 'manchester united'}, {id: 16, name : 'arsenal'} ]; const clubsById = clubs.reduce((acc, club) => { // 把当前club的id作为键,club对象作为值存入累加器 acc[club.id] = club; return acc; }, {}); // 初始值是空对象 console.log(clubsById);
运行后你会得到一个对象,键就是每个club的id,值是对应的对象,比如clubsById[7]就能直接拿到liverpool的对象。
方法二:使用forEach循环(直观易懂)
如果你刚接触JavaScript,forEach的写法会更直观,容易理解:
const clubs = [ {id: 3, name : 'chelsea'}, {id: 6, name : 'city'}, {id: 7, name : 'liverpool'}, {id: 10, name : 'manchester united'}, {id: 16, name : 'arsenal'} ]; // 先创建一个空对象用来存储结果 const clubsById = {}; // 遍历数组里的每个club clubs.forEach(club => { // 把id作为键,club对象赋值进去 clubsById[club.id] = club; }); console.log(clubsById);
两种方法最终的效果是完全一样的,你可以根据自己的习惯选择~
内容的提问来源于stack exchange,提问作者moses toh
相关产品推荐
相关产品推荐

