如何在JavaScript的map()中转换对象属性键名为小写并重命名?
如何在map()中转换对象键名以匹配目标格式
没问题,我来帮你搞定这个需求!你现在的代码只是原样提取了原对象的键名,要得到你想要的输出格式,只需要在map()的回调函数里,给返回的对象指定新的键名就可以了——完全不用修改全局的watchList变量,也能用上你提到的toLowerCase()(不过针对这个特定场景,直接指定键名更简洁,我两种情况都给你说明)。
最直接的解决方案(针对固定键名)
因为你的目标键名是明确的title和rating,直接在返回的对象字面量里映射对应的值就好,代码如下:
var watchList = [ { "Title": "Inception", "imdbRating": "8.8" }, { "Title": "Interstellar", "imdbRating": "8.6" }, { "Title": "The Dark Knight", "imdbRating": "9.0" }, { "Title": "Batman Begins", "imdbRating": "8.3" }, { "Title": "Avatar", "imdbRating": "7.9" } ]; var ratings = watchList.map( ({Title, imdbRating}) => ({ title: Title, // 用目标键名title对应原Title的值 rating: imdbRating // 用目标键名rating对应原imdbRating的值 })); console.log(JSON.stringify(ratings));
运行这段代码后,输出就完全符合你的目标格式了:[{"title":"Inception","rating":"8.8"},{"title":"Interstellar","rating":"8.6"},{"title":"The Dark Knight","rating":"9.0"},{"title":"Batman Begins","rating":"8.3"},{"title":"Avatar","rating":"7.9"}]
如果想用toLowerCase()处理键名(通用场景)
如果以后遇到需要把原键名统一转小写的场景(比如原键名是Title转成title),可以用循环遍历键名的方式,不过因为你的需求里imdbRating要转成rating(不是单纯的imdbrating),所以需要额外处理一下:
var ratings = watchList.map(item => { const newItem = {}; // 遍历原对象的键名,转小写后赋值 for (const key in item) { newItem[key.toLowerCase()] = item[key]; } // 把imdbrating改成rating,然后删除原键 newItem.rating = newItem.imdbrating; delete newItem.imdbrating; return newItem; });
不过显然第一种方法更适合你当前的需求,代码更简洁易读,也完全满足要求。
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

