Javascript 将数组字符串的声明拆分为字符串数组

Javascript 将数组字符串的声明拆分为字符串数组,javascript,jquery,arrays,split,Javascript,Jquery,Arrays,Split,使用javascript/jquery将包含数组声明的字符串拆分为字符串数组的最佳方法是什么。我正在使用的字符串示例: franchise[location][1][location_name] 我希望将其转换为如下数组: ['franchise', 'location', '1', 'location_name'] 奖励:如果我也能一次性将该数值变成一个整数而不仅仅是一个字符串,那就太棒了。一个选择就是只匹配单词字符: console.log( “特许经营权[地点][1][地点名称]”

使用javascript/jquery将包含数组声明的字符串拆分为字符串数组的最佳方法是什么。我正在使用的字符串示例:

 franchise[location][1][location_name]
我希望将其转换为如下数组:

['franchise', 'location', '1', 'location_name']

奖励:如果我也能一次性将该数值变成一个整数而不仅仅是一个字符串,那就太棒了。

一个选择就是只匹配单词字符:

console.log(
“特许经营权[地点][1][地点名称]”。匹配(/\w+/g)

);一个选项是只匹配单词字符:

console.log(
“特许经营权[地点][1][地点名称]”。匹配(/\w+/g)

);
您可以将
String.split
与匹配所有非字母数字字符的正则表达式一起使用

诸如此类:

const str='特许经营[location][1][location_name];
const result=str.split(/\W+/).filter(布尔值);

控制台日志(结果)
您可以将
String.split
与匹配所有非字母数字字符的正则表达式一起使用

诸如此类:

const str='特许经营[location][1][location_name];
const result=str.split(/\W+/).filter(布尔值);
控制台日志(结果)您可以试试

 const str = 'franchise[location][1][location_name]';
 const res = str.split(/\W+/).map(i => { return Number(i) ? Number(i) : i;})
你可以试试

 const str = 'franchise[location][1][location_name]';
 const res = str.split(/\W+/).map(i => { return Number(i) ? Number(i) : i;})

你为什么要这样做?这听起来很像一个X/Y问题,在这里,您询问的是一个尝试的解决方案,而不是描述实际问题,这时可能会有更好、更简单的解决方案。第一个字符串实际上是动态创建的输入的名称元素。所有非数值元素都会不断生成,但在创建该输入的每次迭代中,数量都会发生变化。我需要知道“位置号”,以便在用户修复验证问题后删除验证标志。因此,该字符串必须来自某个地方,因此,
1
值必须可以从那里检索/访问…?我在php端进行验证,如果发现标记中的元素有错误,则向jquery选项卡元素添加一个类。一旦用户满足验证要求,我就可以删除单个错误消息,但正确的选项卡更难定位。我尝试使用
$(this).closest('.tab')
,但jQuery找不到它。您为什么需要这样做?这听起来很像一个X/Y问题,在这里,您询问的是一个尝试的解决方案,而不是描述实际问题,这时可能会有更好、更简单的解决方案。第一个字符串实际上是动态创建的输入的名称元素。所有非数值元素都会不断生成,但在创建该输入的每次迭代中,数量都会发生变化。我需要知道“位置号”,以便在用户修复验证问题后删除验证标志。因此,该字符串必须来自某个地方,因此,
1
值必须可以从那里检索/访问…?我在php端进行验证,如果发现标记中的元素有错误,则向jquery选项卡元素添加一个类。一旦用户满足验证要求,我就可以删除单个错误消息,但正确的选项卡更难定位。我尝试使用
$(this).closest('.tab')
,但jQuery找不到它。您不需要正则表达式中的
g
。如果你把它放在里面,它会使匹配变慢。你确实需要
/g
-否则,你只会得到
[“特许经营”]
,你不需要正则表达式中的
g
。如果你把它放在里面,它会使比赛变慢。你确实需要
/g
-否则,你只能得到
[“特许经营”]