javascript - 如何转换不确定数量的输入字符串?

标签 javascript

我正在编写一些代码来转换一些输入名称(例如: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/

相关文章:

javascript - Jquery 滚动到基于数据属性的部分

Javascript:错误,对象不是函数

javascript - jQuery 不会解析带有称为选项的节点的 xml

javascript - 在同一个声明中创建javascript函数和原型(prototype)定义?

Javascript重命名函数(不是变量名)

javascript - 用vue $refs获取不到id的值?

javascript - Ajax响应未调用成功:function() when using jQuery 1. 8.3

javascript - 一旦检索到所有数据,选择2远程数据搜索

javascript - knockout 切换嵌套项目的可见性

javascript - 单击单选按钮时如何显示下拉列表?