1

我正在做一些显示或隐藏数字的事情,具体取决于列表上的复选框是否被选中。

为此,我需要首先收集一个仅包含已选中复选框的数组,以便稍后使用它们的值与列表进行比较。

为了做到这一点,我在 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;
};

对于那些不熟悉的人:http $.grep: //api.jquery.com/jQuery.grep/

我的问题是:我在这里重新发明轮子吗?我这样做是因为indexOf()只返回遇到值的第一个索引,而不是全部。

4

1 回答 1

3

$.grep对于这种情况,这并不是最好的 jQuery 数组方法。

$.map将更有效地工作

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


console.log( indexArray);

演示:http: //jsfiddle.net/x8qgq/1/

于 2013-04-13T17:00:43.070 回答