例如,我在下面有一个简单的数组:
[
{ team: { name: 'Newport County AFC' } },
{ team: { name: 'Southport FC' } },
{ team: { name: 'AFC Fylde' } },
{ team: { name: 'FC United' } }
]
我只想在字符串的最后部分/出现时删除给定团队名称的FC
和AFC
子字符串。
我只能在下面提供此代码,您也可以看到here
arr.forEach(function(key, index, array)
{
let teamname = key.team.name.replace(/AFC|FC/g,'');
array[index] = teamname;
});
但是,有一个问题,为什么?因为某些团队的名称以FC
或AFC
开头,因此它们将被删除,而且我的方法也将字符串留有空格,这不是我想要的方式。
我的预期输出是:
['Newport County', 'Southport', 'AFC Fylde', 'FC United']
那么我该如何实现呢?有没有办法改善代码或更好的解决方案?
答案 0 :(得分:2)
您也可以查找字符串的结尾。
var array = [{ team: { name: 'Newport County AFC' } }, { team: { name: 'Southport FC' } }, { team: { name: 'AFC Fylde' } }, { team: { name: 'FC United' } }];
array.forEach(function(object) {
object.team.name = object.team.name.replace(/\s*(AFC|FC)$/, '');
});
console.log(array);
答案 1 :(得分:2)
您可以使用Array::map()和String::replace使用$
检测要替换的字符串是否在结尾。另外,您可以使用String::trim()从结果字符串的两端删除空格。
const input = [
{team: {name: 'Newport County AFC'}},
{team: {name: 'Southport FC'}},
{team: {name: 'AFC Fylde'}},
{team: {name: 'FC United'}}
];
let res = input.map(
({team: {name}}) => name.replace(/AFC$|FC$/, "").trim()
);
console.log(res);
答案 2 :(得分:2)
这里是使用replace和其他正则表达式的选项
var teams = [
{
team: { name: 'Newport County AFC' }
},
{
team: { name: 'Southport FC' }
},
{
team: { name: 'AFC Fylde' }
},
{
team: { name: 'FC United' }
}
]
var junk = (/\sA?FC/g)
var newTeams = teams.map((t) => {
return t.team.name.replace(junk, "")
})
console.log(newTeams)