拆分字符串,然后显示没有最后一项的所有项目

时间:2017-02-12 13:18:06

标签: javascript

我有(例如)像let abc = 'Jonny_Name'这样的字符串,所以如果我想检查,这是否是名字我检查:

let isName = abc.split('_')[1];  
 isName === 'Name' ? `your name is ${abc.split('_')[0]}` : 'not name';  

但我有这种情况,当我有let cba = 'Jonny_Great_Dude_Name'字符串时 在这种情况下,我以这种方式检查名称:

let isName = cba.split('_').pop(-1);  
 isName === 'Name' ? `your name is ${cba.splitOnLast('_')[0]}` : 'not name'

这很好用,但我没有找到有关splitOnLast方法的任何信息。这种方法在浏览器中兼容有问题吗?我可以为此做一些替代方案。我想在没有最后的情况下采取所有元素..

UPD。在控制台中它工作正常,但在项目中我有错误消息,如item.splitOnLast is not a function enter image description here

UPD。与第一个示例中的Jonny_Name一样,成为'Jonny',期望Jonny_Great_Dude_Name将为Jonny_Great_Dude

2 个答案:

答案 0 :(得分:2)

Array.pop()没有参数 - 您可以使用它来从分割操作中获取最后一个元素

let isName = cba.split('_').pop();  

或者你反转新数组取“第一”元素:

let isName = cba.split('_').reverse()[0]

String.split()获取返回数组最大长度的第二个参数。这应该可以帮到你:

cba.split('_', cba.split('_').length - 1)

或将其作为字符串

cba.split('_', cba.split('_').length - 1).join("_")

运行示例

const cba = 'Jonny_Great_Dude_Name';
const isName = cba.split('_').pop()
const rest = cba.split('_', cba.split('_').length - 1).join("_")
console.log({isName, rest})

答案 1 :(得分:2)

const abc = 'Jonny_Great_Dude_Name';
const splitted = abc.split(/_/);
const [other, name] = [splitted.pop(), splitted.join('_')];
console.log({name:name, isName: other == 'Name'});