我正在做一些根据列表中的复选框是否被选中来显示或隐藏数字的小东西。
为此,我需要先收集一个仅包含已选中复选框的数组,以便稍后使用它们的值与列表进行比较。
为了做到这一点,我在 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);
关于javascript - 查找数组中具有特定值的所有索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15990299/