使用split,splice抓取阵列中球员的姓氏

时间:2016-09-21 16:18:23

标签: javascript jquery arrays split splice

目的

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

以下是一些名称的示例,Pierre TurgeonLarry PateyKelly ShattenkirkBarret JackmanAlex PietrangeloJacques Plante和< strong>在一个特例中,该人的姓氏为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(" ");

3 个答案:

答案 0 :(得分:1)

嗯,你可以只在第一个空格分开,但是你会遇到像John Steven 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>

答案 1 :(得分:0)

使用ES 6解构:

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

如评论中所述,这很脆弱。你在这里得到的答案是going to be fragile。在涉及名称的任何情况下,您都必须谨慎行事,但对于简单的输入,这应该可以正常工作。

答案 2 :(得分:0)

我认为扔了一个地图函数,你只需要使用tonsplit切片并像这样连接:

{{1}}