我有(例如)像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
UPD。与第一个示例中的Jonny_Name
一样,成为'Jonny'
,期望Jonny_Great_Dude_Name
将为Jonny_Great_Dude
答案 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'});