我正在编写一些代码来转换一些输入名称(例如:John Doe -> J. Doe),而不知道输入名称的长度(可能是 John Williams Roger Fred Doe,即 J. W. R. F. Doe)。
我找到了 2 个名称输入的算法,但我找不到有效的方法来涵盖其余情况。我想到的唯一方法是将其余情况包装在一些 if 语句中,最多 10 个名称。还有其他有效的方法吗?提前致谢!
function convertName(name) {
var [a, b] = name.split(" ");
var c = `${a[0]}${". "}${b}`;
return c;
}
最佳答案
我想你想要这样的东西:
function convertName(name) {
const nameArray = name.split(" ")
return nameArray
.map((name, index) => index !== nameArray.length - 1 ? `${name[0]}.` : name)
.join(' ')
}
这里发生了什么?
.map()
迭代一个数组并返回一个新数组,它可以采用 1 或 2 个参数、项目和索引(按顺序)Array.map()index !== nameArray.length - 1
我们确保它不是索引中的最后一项,因为您需要整个? ${name[0]}.
如果不是最后一项,则 chop:名称
如果是,则保留完整.join(' ')
将.map()
返回的数组转回单个字符串
此函数不关心名称中有多少部分,它还处理单个部分名称,即:"John Snow The One"=> "J. S. T. One"
while "约翰”=>“约翰”
关于javascript - 如何转换不确定数量的输入字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55622705/