获取拆分字符串数组的最后一个元素

167 javascript split

我需要使用多个分隔符来获取split数组的最后一个元素.分隔符是逗号和空格.如果没有分隔符,则应返回原始字符串.

如果字符串是"你今天怎么样?" 它应该返回"今天?"

如果输入为"hello",则输出应为"hello".

我怎样才能在JavaScript中执行此操作?

Guf*_*ffa 723

一切都是单行的.:)

var output = input.split(/[, ]+/).pop();
Run Code Online (Sandbox Code Playgroud)

  • @Jangla:这不是问题,因为数组是由`split`调用创建的,所以不管怎样.通过从数组中弹出项目不会更改原始字符串. (39认同)
  • 这里的问题是pop()也*从数组中删除*元素,从而改变它. (6认同)
  • @VitorGuerreiro:是的,您可以使用 `slice` 方法:`var output = input.split(/[, ]+/).slice(-2);`。 (2认同)
  • @MarioLevrero:这是一个量词,其含义与量词“ {1,}”相同,即“ [,] +”匹配集合中的一个或多个字符(逗号和空格)。当您希望从字符串中获取所有单词时,这很有用,但是当您只希望最后一个单词没有任何功能上的区别时,由于数组中的字符串会更少,因此它只会减少开销。 (2认同)

Pao*_*ino 109

var str = "hello,how,are,you,today?";
var pieces = str.split(/[\s,]+/);
Run Code Online (Sandbox Code Playgroud)

此时,pieces是一个数组并pieces.length包含数组的大小,以便获取数组的最后一个元素pieces[pieces.length-1].如果没有逗号或空格,它将只输出给定的字符串.

alert(pieces[pieces.length-1]); // alerts "today?"
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用`pieces.pop()`来获取数组的最后一项. (30认同)
  • 有没有办法使用它来引用 str.split() 而不必存储变量? (5认同)
  • `var last = str.split(/[\s,]+/).pop()` (4认同)

小智 46

var item = "one,two";
var lastItem = item.split(",").pop(-1);
Run Code Online (Sandbox Code Playgroud)

这不起作用吗?

  • 我不认为pop()接受参数. (10认同)
  • 但是,一般来说`.split(',').pop()`适用于逗号分隔字符串的最后一个元素.只是说'因为我被Guffa的惊人答案所误导,我只是无视它,因为不需要正则表达式,并认为诀窍就在那里!:P (5认同)

Smi*_*ver 12

您也可以考虑反转数组并采用第一个元素。这样,您不必知道长度,但是它并没有带来真正的好处,也没有缺点,即对于大数组,反向操作可能需要更长的时间:

array1.split(",").reverse()[0]
Run Code Online (Sandbox Code Playgroud)

虽然很简单,但也可以修改原始数组。那可能是问题,也可能不是问题。

参考:https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse

也许您可能想使用它:

array1.split(",").pop()
Run Code Online (Sandbox Code Playgroud)

  • `.pop()` 方法是迄今为止我见过的最好的答案。这就是它被创建的原因! (3认同)

小智 7

array.split(' ').slice(-1)[0]
Run Code Online (Sandbox Code Playgroud)

有史以来最好的,也是我的最爱。

  • 啊,当然。这是一个很好的答案,因为它不会改变原来的+1 (2认同)
  • 在切片之后使用“.pop()”仍然很方便。因为访问器方法返回一个新数组,所以没有突变。 (2认同)

Den*_*nov 6

at()方法采用整数值并返回该索引处的项目,允许正整数和负整数。负整数从数组中的最后一项开始倒数。

const str = "how,are you doing, today?";
const last = str.split(/[\s,]+/).at(-1);
console.log({last});
Run Code Online (Sandbox Code Playgroud)

文档链接:Array.prototype.at()


Dav*_*nte 5

这种方式很容易理解,而且很简短。

const output = input.split(',').pop().split(' ').pop();
Run Code Online (Sandbox Code Playgroud)