使用Javascript中的split方法获取数组的最后一个元素

10

我正在尝试使用javascript在字符串上进行分割后获取最后一个数组项。

    var str ="Watch-The-Crap-456".split('-')[this.length];
    console.log(str);​​​ 
   // want it to console log 456, now it consoles WATCH which is in array[0]

我尝试使用[this.length - 1]来获取数组的最后一个元素,但是它给了我undefined,我知道有些人可能会说创建另一个变量来存储数组,但有趣的是看看我们是否可以使事情更简短。


从上面提供的代码中,无法知道'this'所指的是什么。 - Alex Pacurar
即使这是有效的,你也会引入一个偏移量错误,因为索引是基于0的。 - Aesthete
只用两行代码就能完成。即使只有一行,阅读、理解和维护起来也更加困难。 - jbabey
有什么意义呢?为什么你想要在字符串字面值上执行这些操作? - Aesthete
4个回答

38

怎么样:

"Watch-The-Crap-456".split('-').pop(); // returns 456

请注意,尽管这看起来很不错,但您正在创建一个全新的数组仅仅是为了获取其中一个元素。 - Aesthete
@lostsource如果我不想要“456”,而是想要“Watch-The-Crap”,有没有相应的pop()函数呢? - Imran Bughio
1
@ImranBughio 你可以使用 substr()lastIndexOf() 的组合来实现,不需要使用 pop() - lostsource

2

this是在解除引用之后定义的(或者至少没有引用数组)。

一种天真的方法是两行:

var str ="Watch-The-Crap-456".split('-');
console.log(str[str.length - 1]);​​​

点击此处查看实际效果。


2

你只需要获取最后一个元素吗? 可以使用以下方法:

var str ="Watch-The-Crap-456";
console.log(str.slice(str.lastIndexOf('-')+1));​

在这种情况下,你必须先定义你的字符串,这是有意义的。我不认为有任何情况需要从字符串字面量中获取最后一个元素,你只需写str = "456"就行了。

0

使用下划线,它与某些其他库/框架一起包含,例如Backbone.js:

_.last(str.split('-'));

请参见:http://underscorejs.org/#last


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接