Javascript 如何在特定位置用破折号拆分字符串

Javascript 如何在特定位置用破折号拆分字符串,javascript,arrays,split,Javascript,Arrays,Split,我有一个动态创建的数组,如下所示: ["171281-0-001-1", "171281-0-001-2"] 基本上,我是基于一个非常复杂的函数来创造价值的。但这一功能在这里并不重要。基本上,例如171281-0-001-1由账号+id组成。171281-0-001是账号,1是id。 破折号可以是任何数字,但在最后一个破折号之后,它始终是id。 我如何将它们与我的值区分开来,并将其分配到不同的变量中 尝试: for (let key in this.your_reference) { ex

我有一个动态创建的数组,如下所示:

["171281-0-001-1", "171281-0-001-2"]
基本上,我是基于一个非常复杂的函数来创造价值的。但这一功能在这里并不重要。基本上,例如
171281-0-001-1
由账号+id组成。
171281-0-001
是账号,
1
是id。 破折号可以是任何数字,但在最后一个破折号之后,它始终是id。 我如何将它们与我的值区分开来,并将其分配到不同的变量中

尝试:

for (let key in this.your_reference) {
  extractedAccountNumber = key.split('-')[0];
  extractedId = key.split('-')[1];
}
但由于破折号现在可以是任意数字,因此变量的值是错误的。有什么想法吗,伙计们?提前感谢

您可以使用
map()
split()
从上一个数组索引中获取项目:

var-arr=[“171281-0-001-1”、“171281-0-001-2”];
var idList=arr.map(d=>{
d=d.分裂('-');
返回d[d.length-1];
});

console.log(idList)您可以将正则表达式与两个组一起使用:一个捕获组匹配任何内容,然后匹配破折号,然后另一个捕获组匹配数字,后跟字符串结尾:

[“171281-0-001-1”、“171281-0-001-2”]。forEach((str)=>{
//数组中的第一项是整个匹配项,
//但您只关心两个捕获组,因此忽略第一项:
const[,accountNumber,id]=str.match(/(.+)-(\d+)$/);
控制台日志(帐号);
console.log(id);
});您可以使用和:

var-arr=[“171281-0-001-1”、“171281-0-001-2”];
var id=arr.map(d=>d.substring(d.lastIndexOf('-')+1));
控制台日志(ids)
const arr=[“171281-0-001-1”、“171281-0-001-2”];
const accountDetails=arr.map((项目)=>{
const itemArr=item.split('-');
const accountNumber=itemArr.slice(0,itemArr.length-1).join('-');
const id=itemArr[itemArr.length-1];
返回{id,accountNumber};
});

console.log(accountDetails)但是第一项呢?我需要保持其他值不变is@chewi,您可以使用新变量保存函数返回的结果…更新了答案…谢谢。