我根据列表上的复选框进行检查,显示或隐藏数字。
为此,我需要先收集一个只有已经选中的复选框的数组,这样我就可以使用它们的值与稍后的列表进行比较。
为了做到这一点,我在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()
只返回遇到值的第一个索引,而不是所有索引。
答案 0 :(得分:3)
$.grep
并不是最好的jQuery数组方法。
$.map
将更有效地工作
var indexArray = $.map(arr, function(elementOfArray, indexInArray) {
return elementOfArray == val ? indexInArray : null;
});
console.log( indexArray);