使用split、splice获取数组中玩家的姓氏

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

本文关键字:玩家 数组 split splice 获取 使用      更新时间:2023-09-26

目标

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

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

scripts.js

在许多情况下,我想要数组中的偶数项,但对于圣马赛,我想要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(" ");

好吧,你只能在第一个空格处分开,但你会遇到像约翰·史蒂文·墨菲这样的名字的麻烦,那里的姓氏只有"墨菲"。还有像杰拉德·范德桑登或安吉丽娜·德拉维加这样的名字,姓氏中不仅有一个空格,还有两个空格。

最重要的是,如果没有明确的分隔符,那么某些输入总是错误的。

但是,如果你在"第一个"名字没有空格的基础上工作(这是一个有缺陷的假设(:

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>

使用ES 6销毁:

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

正如评论中指出的那样,这是脆弱的。你在这里得到的任何答案都是脆弱的。在任何涉及名称的情况下,您都必须小心处理,但对于简单的输入,这应该可以正常工作。

我想抛出了一个映射函数,你只需要像这样tonsplit slice和join:

 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);