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

标签 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() 只返回遇到值的第一个索引,而不是所有索引。

最佳答案

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

$.map 会更有效

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


console.log( indexArray);

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

关于javascript - 查找数组中具有特定值的所有索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15990299/

相关文章:

javascript - 使用 graphql 在 react-native 中重新获取查询

javascript - 当用户滚动到一个元素时,如何删除它的不透明度?

Java 无法从 AJAX POST 接收数据

javascript - "Save As"浏览器下载文件对话框

java - 将函数中的数组与空值进行比较

python - 将 NumPy 数组转储到 csv 文件中

javascript - 在 highcharts 中显示该系列中 json 键值对的总数

javascript - Backbone.js 父 View 与 subview

c - gcc 如何处理数组 [ 与 C 编程相关的问题 ]

javascript - 当导航栏固定时添加边距