2013-04-13 184 views
0

我正在根據列表中的複選框選中或不選中數字顯示或隱藏的內容。查找具有特定值的數組中的所有索引

爲此,我需要首先收集一個只有複選框已被選中的數組,因此我可以使用它們的值與稍後的列表進行比較。

爲了做到這一點,我寫了一個小功能,使用jQuery的幫助:

var findIndexesWithValue = function(arr, val) { 
    //Find the correct indexes and put them in an array, for later use. 
    var indexArray = []; 

    $.grep(arr, function(elementOfArray, indexInArray) { 
     //Get all indexes where the value corresponds 
     if (arr[indexInArray] === val) { 
      indexArray.push(indexInArray); 
     } 
    }); 

    return indexArray; 
}; 

對於那些不熟悉$.grephttp://api.jquery.com/jQuery.grep/

我的問題是:我是重新發明這裏的輪子?我這樣做是因爲indexOf()只返回遇到值的第一個索引,而不是全部。

+1

http://codereview.stackexchange.com –

+0

@HankyPankyㇱ不知道那一個。謝謝! – KoenDG

回答

3

$.grep對於這種情況並不是最好的jQuery數組方法。

$.map將更加有效地

var indexArray = $.map(arr, function(elementOfArray, indexInArray) { 
     return elementOfArray == val ? indexInArray : null; 
}); 


console.log(indexArray); 

DEMO:http://jsfiddle.net/x8qgq/1/

相關問題