【问题标题】:Find all indexes in an array that have a certain value查找数组中具有特定值的所有索引
【发布时间】:2013-04-13 16:47:55
【问题描述】:

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

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

为了做到这一点,我在 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() 仅返回遇到值的第一个索引,而不是所有索引。

【问题讨论】:

标签: javascript jquery arrays


【解决方案1】:

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

$.map 会更有效地工作

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


console.log( indexArray);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 2018-12-05
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多