我在数组中有名字
868_KK_0_KK_0tab1_checkbox
868_KK_1_KK_0tab2_checkbox
868_ZZ_0_ZZ_0tab3_checkbox
868_ZZ_0_ZZ_0tab5_checkbox
正好在单词' tab'有一个数字。
是否可以提取这些数字并将它们推送到数组
这是我的代码
它只是一个没有逻辑的示例代码
http://jsfiddle.net/nx33jez6/5/
var temp_arry = [];
var jsonarray = [
{
"name": "868_KK_0_KK_0tab1_checkbox"
}
,
{
"name": "868_KK_1_KK_0tab1_checkbox"
}
,
{
"name": "868_ZZ_0_ZZ_0tab3_checkbox"
}
,
{
"name": "868_ZZ_1_ZZ_0tab2_checkbox"
}
];
for (var i = 0; i < jsonarray.length; i++) {
var name = jsonarray[i].name;
}
请你告诉我怎么做。
答案 0 :(得分:4)
你可以使用regular expression,因为:
var pattern = /tab(\d+)/,
arr = [];
for (var i = 0; i < jsonarray.length; i++) {
var name = jsonarray[i].name;
arr.push(name.match(pattern)[1]);
}
console.log(arr);
其中\d+
匹配一个或多个数字,括号()
用于记住匹配的数字
答案 1 :(得分:0)
您可以使用正则表达式匹配,然后从匹配项中删除“标签”字样,如下所示:
var temp_arry = [];
for (var i = 0; i < jsonarray.length; i++) {
var name = jsonarray[i].name;
var tab = name.match(/tab[0-9]/)[0].replace('tab', '');
temp_arry.push(tab);
}
console.log(temp_arry);
这显示了达到你想要的所有步骤,虽然像@DemoUser回答它可以更简洁地完成
答案 2 :(得分:0)
您可以使用Array.map
,然后在Array.split
上使用"tab"
并获取第二个元素并在_
上拆分,然后返回第一个元素
var arr = inputArr.map(function(str){
return str.split("tab")[1].split("_")[0];
});
答案 3 :(得分:0)
或没有正则表达式:
arr.forEach(function(v){
nr = v.split('_checkbox')[0].split('b')[1];
});