簡體   English   中英

使用拆分,拼接來獲取數組中玩家的姓氏

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

目的

我正在嘗試只獲取一系列范圍內的玩家的姓氏,然后將這些lastName存儲在自己的變量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(" ");

好吧,您只能在第一個空格處分開,但隨后您會遇到諸如John Steven Murphy之類的名字的麻煩,其中的姓氏只是“ Murphy”。 還有像傑拉德·范德·桑登(Gerard van der Sanden)或安吉麗娜·德拉維加(Angelina de la Vega)之類的名字,那里的姓氏不僅有一個空格,而且還有兩個。

底線是,如果您沒有明確的定界符,則對於某些輸入總是錯誤的。

但是,如果您基於“名字”將沒有任何空格的工作(這是有缺陷的假設):

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 = '';
}

如評論中所述,這是脆弱的。 您在這里得到的任何答案都將是脆弱的 在涉及名稱的任何情況下,您都必須謹慎行事,但是對於簡單的輸入,這應該可以。

我認為拋出一個map函數,您只需要tonsplit slice並像這樣加入:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM