返回空数组的Javascript筛选器
我正在使用,它返回一个空数组返回空数组的Javascript筛选器,javascript,jquery,Javascript,Jquery,我正在使用,它返回一个空数组 function isSelected(value){ var tagString = $(value).attr('class'); $.each($(brandDrop.selections), function(index, brand) { if(tagString.indexOf(brand) >= 0) { console.log(tagString); ret
function isSelected(value){
var tagString = $(value).attr('class');
$.each($(brandDrop.selections), function(index, brand) {
if(tagString.indexOf(brand) >= 0) {
console.log(tagString);
return tagString;
}
});
}
var products = [];
$.each($('.products li'), function(index, product){
products.push(product);
});
var brandFiltered = products.filter(isSelected);
console.log(brandFiltered);
以下是循环内tagstring和循环外brandFiltered的控制台输出:
AugustaCollection,Crib,publishSK,simmons,simmons-kids,wood
cribs:2058 BellanteCollection,Crib,publishSK,simmons-kids,wood
cribs:2058 BelmontCollection,Crib,publishSK,simmons-kids,wood
cribs:2082 []
通过选中复选框可触发此功能。这个过滤器要做的是获取一个html元素数组,检查它们的class属性是否存在所选值,并且只返回满足过滤器条件的元素的类名。循环内的控制台日志显示了正确的元素,但由于某种原因,在循环外返回了一个空数组。我是否错误地使用了筛选方法 您的
返回标记字符串代码>行将结果返回给$。每个
函数,您的isSelected函数当前不返回任何内容
您可以编辑该函数以执行检查,并在找到字符串时返回true
function isSelected(value){
var tagString = $(value).attr('class');
var foundString = false;
$.each($(brandDrop.selections), function(index, brand) {
if(tagString.indexOf(brand) >= 0) {
console.log(tagString);
foundString = true;
}
});
return foundString;
}
过滤器的功能与map不同,它只用于通过检查条件并返回true或false来减小数组的大小。如果只想拥有一个类数组,可以在fitler之后映射
brandFiltered = brandFiltered.map(function(x){ return $(x).attr('class'); });
您的isSelected
方法不返回任何内容(undefined
),当您只需要类时,它是否过滤了数组,但返回了整个元素?在过滤器后添加注释以进行映射,以获取类名数组。