使用split、splice获取数组中玩家的姓氏
Grabbing the last names of players in array using split, splice
目标
我试图在一系列跨度中只获取玩家的姓氏,然后能够将这些姓氏存储在他们自己的变量var lastNameA
、var lastNameB
。。。
以下是一些名称的示例,Pierre Turgeon
、Larry Patey
、Kelly Shattenkirk
、Barret Jackman
、Alex Pietrangelo
、Jacques 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);
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- 清除画布玩家路径 - 重绘关卡数组
- JavaScripting .sort()'ing 一个多维分数数组来排序玩家名称
- 使用split、splice获取数组中玩家的姓氏
- JQuery和Javascript在一个关联数组中跟踪两个玩家