2012-05-04 40 views

回答

4

嘗試:

'8=0,2=1,5=1,6=0,7=0' 
    .match(/\d?=(0{1})/g) 
    .join(',') 
    .replace(/=0/g,'') 
    .split(','); //=> [8,6,7] (strings) 

,或者,如果你可以使用高級Array iteration methods

'8=0,2=1,5=1,6=0,7=0'.split(',') 
    .filter(function(a){ return /=0/.test(a); }) 
    .map(function(a){ return +(a.split('=')[0]); }) //=> [8,6,7] (numbers) 
+0

他只希望數字不是'= 0'部分:) – Sarfraz

+0

好的,沒問題,編輯 – KooiInc

+0

+1,很好地完成。 – Sarfraz

2
var nums = []; 
'8=0,2=1,5=1,6=0,7=0'.replace(/(\d+)=0,?/g, function (m, n) { 
    nums.push(+n); 
}); 

注意它返回的數字,而不是字符串數組。

另外,這裏是一個更簡潔,但速度較慢,回答:

'8=0,2=1,5=1,6=0,7=0'.match(/\d+(?==0)/g); 

而同樣的答案,但它返回的數字,而不是字符串:

'8=0,2=1,5=1,6=0,7=0'.match(/\d+(?==0)/g).map(parseFloat); 
+0

+1,但你可以像這樣簡化你的正則表達式,然後刪除'if(keep ==='0')' –

+0

Thanks,edited。我一定很累... –

0

試試這個:

function parse(s) 
{ 
    var a = s.split(","); 
    var b = []; 
    var j = 0; 
    for(i in a) 
    { 
    if(a[i].indexOf("=0")==-1) continue; 
    b[j++] = parseFloat(a[i].replace("=0",""));   
    } 
    return b; 
} 

希望它有幫助!

+0

請用'document.write'刪除零件... – 2012-05-04 12:08:29

+0

Coule你讓我知道爲什麼? –

+0

因爲它足以返回數字。 'document.write'會殺死網站...。如果你刪除它,我會提高你的答案。行! – 2012-05-04 12:14:49