查找数组中具有特定值的所有索引

时间:2013-04-13 16:47:55

标签: javascript jquery arrays

我根据列表上的复选框进行检查,显示或隐藏数字。

为此,我需要先收集一个只有已经选中的复选框的数组,这样我就可以使用它们的值与稍后的列表进行比较。

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

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

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

1 个答案:

答案 0 :(得分: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/