如何用.map()和.split()移除数组中姓名间的逗号?
用.map()和.split()移除姓名中的逗号并格式化
你可以在map()遍历数组的过程中直接处理每个对象的name属性,不用单独提取姓名后再处理。核心步骤如下:
- 用
.split(', ')把带逗号的姓名分割成姓和名的数组(注意分割符是,,包含逗号和空格,避免拼接后出现多余空格) - 用
.join(' ')把分割后的数组重新拼接成无逗号的字符串;如果需要调整姓名顺序,可先对数组使用.reverse()
示例1:移除逗号,保留原「姓 名」顺序
const players = [ { name: 'Modrić, Luka', year: 1985 }, { name: 'Christian, Eriksen', year: 1992 }, { name: 'Griezmann, Antoine', year: 1991 }, { name: 'Achraf, Hakimi', year: 1998 }, { name: 'Martínez, Lautaro', year: 1997 } ]; const formattedPlayers = players.map(player => { // 分割姓名为数组,移除逗号 const nameParts = player.name.split(', '); // 用空格拼接成新姓名 const newName = nameParts.join(' '); // 返回新对象,不修改原数组(推荐做法) return { ...player, name: newName }; }); console.log(formattedPlayers);
输出结果:
[ { name: 'Modrić Luka', year: 1985 }, { name: 'Christian Eriksen', year: 1992 }, { name: 'Griezmann Antoine', year: 1991 }, { name: 'Achraf Hakimi', year: 1998 }, { name: 'Martínez Lautaro', year: 1997 } ]
示例2:移除逗号并调整为「名 姓」顺序
如果需要把姓名格式改成常见的「名在前,姓在后」,只需要在分割后反转数组:
const formattedPlayers = players.map(player => { const nameParts = player.name.split(', '); // 反转数组后拼接 const newName = nameParts.reverse().join(' '); return { ...player, name: newName }; }); console.log(formattedPlayers);
输出结果:
[ { name: 'Luka Modrić', year: 1985 }, { name: 'Eriksen Christian', year: 1992 }, { name: 'Antoine Griezmann', year: 1991 }, { name: 'Hakimi Achraf', year: 1998 }, { name: 'Lautaro Martínez', year: 1997 } ]
为什么之前的尝试没成功?
你之前只提取了姓名并调用split(),但split()只是将字符串拆分为数组,需要再用join()拼接回字符串,并且要把处理后的姓名重新赋值给对象的name属性,才能得到完整的格式化后数组。
内容的提问来源于stack exchange,提问作者Gustuckit
相关产品推荐
相关产品推荐

