2015-03-25 58 views
0

我有數組中的名字後提取數爲如何某個單詞

868_KK_0_KK_0tab1_checkbox 
868_KK_1_KK_0tab2_checkbox 
868_ZZ_0_ZZ_0tab3_checkbox 
868_ZZ_0_ZZ_0tab5_checkbox 

字「標籤」後究竟有一個數字。

是否可以提取這些數字和他們推到一個數組

這是我的代碼沒有邏輯

它只是一個示例代碼

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; 
} 

莫非你請讓我知道如何做到這一點。

回答

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+匹配一個或多個數字,括號()圍繞它被用於記住匹配的數量

Demo

+0

這一個完美的作品,非常感謝。 – Kiran 2015-03-25 09:01:13

+0

@Kiran不客氣.. – 2015-03-25 09:01:40

0

可以使用正則表達式匹配,然後從匹配中刪除'tab'字樣,如下所示:

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回答可以更簡明地完成

0

你可以使用Array.map,然後"tab"使用Array.split並採取第二個元素和分割上_然後返回的第一個元素

var arr = inputArr.map(function(str){ 
    return str.split("tab")[1].split("_")[0]; 
}); 
0

或者沒有正則表達式:

arr.forEach(function(v){ 
    nr = v.split('_checkbox')[0].split('b')[1]; 
}); 
相關問題