2012-05-03 64 views
2

我有一堆用於過濾信息的鏈接,請參閱:http://i.imgur.com/Huoqb.png使用RegExp刪除數組項目?

當您單擊鏈接時,我將它添加到數組中。例如:

Venue>All = venue-0, Venue>Home = venue-1, Venue>Away = venue-2, 
Vs>All = vs-0, Vs>Lefties = vs-1, Vs>Righties = vs-2 
etc, etc, etc. 

如果用戶在任何類別中單擊「全部」,我想搜索數組並刪除包含該類別的任何項目。例如:myArray['venue-1','venue-2','vs-1'] ...單擊Venue>all,刪除'venue-1''venue-2',然後保留myArray['vs-1']

我可以使用正則表達式來做到這一點:/^venue/並根據您點擊哪個「所有」更改單詞?

我知道我需要做$.inArrayindexOf()splice()的組合,但我無法使它工作。

+0

你使用jQuery嗎? – Tejs

+0

是的,我正在使用jQuery – ksumarine

回答

1

爲此,您可以簡單地用$.grep實用程序:

var someArray = [1, 2, 3]; 

var numbersGreaterThanOne = $.grep(someArray, function(item) 
{ 
    return item > 1; 
}); 

這僅僅是一個樣品,但你可以執行任何的回調來過濾,你喜歡的元素。

+0

那麼,我會如何做到這一點,我需要什麼?我試過\t var filterIt = $ .grep(filters,function(n,i){return n =/^ venue /;});但一無所獲。 – ksumarine

+0

'return item.indexOf('venue')== -1'?測試取決於你。 – Tejs

+0

非常好,我會讓它工作。謝謝! – ksumarine

0

試試這個:

var newList = $.filter(function() { 
    return this.indexOf('venue') != 0; 
}); 
0

對於非jQuery的解決方案,變異就地數組:

for (var i=myArray.length;i--;){ 
    if (...) myArray.splice(i,1); 
} 

哪裏...是任何你想要的測試,如:

if (myRegeEx.test(myArray[i]))