使用拆分、拼接获取数组中玩家的姓氏

Grabbing the last names of players in array using split, splice

Objective

我正在尝试获取一系列跨度中玩家的姓氏,然后能够将这些姓氏存储在他们自己的变量中 var lastNameAvar lastNameB ...

这是一些名称的示例,Pierre TurgeonLarry PateyKelly ShattenkirkBarret JackmanAlex PietrangeloJacques Plante 在一种特殊情况下,此人的姓氏是 St. Marseille

scripts.js

在很多情况下,我会想要数组中的偶数项,但是对于 St. Marseille,我想要 St.Marseille

    // Grabs the names of all the players in the span
    // Then, it joins the names together with a comma and a space
    var fullNames = $("li span").map(function(){
        return $(this).text();
    }).get().join(", ");

    // This breaks a name into their first name and last name
    fullNames.split(" ");

使用 ES 6 解构:

let [first, middle, end] = str.split(' ');
if (!end) {
  end = middle;
  middle = '';
}

如评论中所述,这是脆弱的。你在这里得到的任何答案都是 going to be fragile。在涉及名称的任何情况下,您都必须小心行事,但对于简单的输入,这应该没问题。

好吧,您只能在第一个 space 拆分,但之后您会 运行 遇到像 John Steven Murphy 这样的名字的麻烦,其中姓氏只是 "Murphy."还有像 Gerard van der Sanden 或 Angelina de la Vega 这样的名字,在姓氏中不仅有一个 space,还有两个。

最重要的是,如果您没有明确的分隔符,某些输入总是会出错。

但是,如果您的工作基于 "first" 名称不会有任何 space(这是一个有缺陷的假设):

var lastNames = $("li.span").map(function() {
    var name = $(this).text();
    var index = name.indexOf(" ");
    return index == -1 ? name : name.substring(index + 1);
}).get();

var lastNames = $("li.span").map(function() {
  var name = $(this).text();
  var index = name.indexOf(" ");
  return index == -1 ? name : name.substring(index + 1);
}).get();
console.log(lastNames);
console.log("Note that it gets John Steven Murphy wrong, see answer text for details.");
<ul>
  <li class="span">Pierre Turgeon</li>
  <li class="span">Larry Patey</li>
  <li class="span">Kelly Shattenkirk</li>
  <li class="span">Barret Jackman</li>
  <li class="span">Alex Pietrangelo</li>
  <li class="span">Jacques Plante</li>
  <li class="span">Michel St. Marseille</li>
  <li class="span">Gerard van der Sanden</li>
  <li class="span">Angelina de la Vega</li>
  <li class="span">John Steven Murphy</li>
</ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我想扔了一个地图功能你只需要 tonsplit 切片并像这样加入 :

 var persons = ["Pierre Turgeon", "Larry Patey", "Kelly Shattenkirk", "Barret Jackman", "Alex Pietrangelo", "Jacques Plante", "Thierry St Marseille"];
 var names = persons.map(person => person.split(" ").slice(1).join(" "));
 console.log(names);