如何修改对象列表中各元素的字符串片段?IGDB API图片URL修改问题
解决IGDB API封面URL替换无效的问题
核心原因是:JavaScript中的字符串属于不可变类型,replace()方法不会修改原字符串本身,而是返回一个完成替换的新字符串——你之前的代码只调用了replace()但没把结果存回去,所以看不到任何变化。
方案1:直接修改原collections数据
如果需要更新collections数组里每个元素的封面URL,把replace()的结果重新赋值给原属性即可:
.then(response => { const collections = response.data; collections.forEach(collection => { // 将替换后的新URL赋值回原属性 collection.cover.url = collection.cover.url.replace('t_thumb', 't_1080p'); }); // 后续可直接使用更新后的collections })
方案2:收集替换后的URL到新数组(修复你注释的代码)
如果想保留原URL,只把高清URL存入新数组,需要将replace()的结果赋值给变量后再push:
.then(response => { const collections = response.data; const images = []; collections.forEach(collection => { let imageURL = collection.cover.url; // 把替换后的结果重新赋值给变量 imageURL = imageURL.replace('t_thumb', 't_1080p'); images.push(imageURL); }); // 此时images数组中全是高清封面URL })
额外容错提示
如果存在部分游戏没有cover属性的情况,可添加判断避免报错:
collections.forEach(collection => { // 可选链操作符确保属性存在时才执行替换 if (collection?.cover?.url) { collection.cover.url = collection.cover.url.replace('t_thumb', 't_1080p'); } });
内容的提问来源于stack exchange,提问作者Sami
相关产品推荐
相关产品推荐

