我有这些价值
['book_1', 'reader_2', 'book_borrower_3', 'book_reader_borrower_4']
如何获取他们的编号,该编号附加在最后一个_
之后?我不能做str.split('_')[1]
,因为某些值的确有2个_
,我也可以使用slice来获取最后一个字符,如果数字值超过1个字符该怎么办。
答案 0 :(得分:7)
let values = ['book_1', 'reader_2', 'book_borrower_3', 'book_reader_borrower_4'];
let numbers = values.map(value => value.split("_").pop());
console.log(numbers);
答案 1 :(得分:3)
您可以为此使用正则表达式:/_(\d+)$/
const regex = /_(\d+)$/;
const books = ['book_1', 'reader_2', 'book_borrower_3', 'book_reader_borrower_4']
const numbers = books.map(book => book.match(regex)[1]);
console.log(numbers);
正则表达式的工作方式如下:
_ match a single _
( start a matching group
\d+ match one or more digits
) close matching group
$ assert end of string
您不一定需要开头_
,它是否适合您的用例由您决定
答案 2 :(得分:3)
let values = ['book_1', 'reader_2', 'book_borrower_3', 'book_reader_borrower_4']
let result = values.map(str => str.substring(str.lastIndexOf('_') + 1))
console.log(result);
答案 3 :(得分:2)
您可以匹配最后几个数字。
var array = ['book_1', 'reader_2', 'book_borrower_3', 'book_reader_borrower_4'],
numbers = array.map(s => +s.match(/\d+$/));
console.log(numbers);
答案 4 :(得分:2)
因此,您可以在诸如popp之类的分割方法上使用pop方法
var digit = str.split('_').pop()
或从split返回的数组中获取最后一个元素
var spStr = str.split('_');
var digit = spStr[spStr.length-1]
答案 5 :(得分:0)
您可以使用lastIndexOf和slice函数
const arr = ['book_1', 'reader_2', 'book_borrower_3', 'book_reader_borrower_4'];
const strs = arr.map(str => {
let i = str.lastIndexOf("_");
return str.slice(i+1);
});
console.log(strs);
答案 6 :(得分:0)
在代码段下方尝试此操作
var values = ['book_1', 'reader_2', 'book_borrower_3', 'book_reader_borrower_4'];
for (i = 0; i < values.length; i++) {
console.log(values[i].substring(values[i].lastIndexOf('_') + 1));
}
答案 7 :(得分:0)
我相信@Philips regex解决方案和@AurelBílý解决方案很棒。这是一个很有趣的解决方案
const books = ['book_1', 'reader_2', 'book_borrower_3', 'book_reader_borrower_4'];
const bookNumbers = books.map((book) => book.split('_').reverse()[0]);
公认不是表现最好的,而是另一种实现方法!
答案 8 :(得分:0)
您可以先加入,然后再加入.match(/\d+(?=,|$)/g)
,以获取由,
限定的字符串中的所有数字:
const books = ['book_1', 'reader_2', 'book_borrower_3', 'book_reader_borrower_4'];
const res = books.join().match(/\d+(?=,|$)/g);
console.log(res);