Javascript筛选器返回空数组
Javascript filter returning empty array
我使用的是array.protoype.filter方法,它返回的是一个空数组。
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属性是否存在所选值,并只返回符合过滤器条件的元素的类名。循环中的控制台日志显示了正确的元素,但由于某种原因,在循环外返回了一个空数组。我是否错误地使用了筛选方法?
您的return tagString;
行向$.each
函数返回一个结果,而您的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;
}
Filter的功能与map不同,它只用于通过检查条件并返回true或false来减小数组的大小。如果你只想有一个类的数组,你可以在fitler之后映射。
brandFiltered = brandFiltered.map(function(x){ return $(x).attr('class'); });
相关文章:
- 对象数组返回自最近日期以来的最高总体值
- 从多维数组返回嵌套数组
- 为什么当我点击<a>使用纯javascript;这个“;返回url,数组返回“url”;未定义”;
- 带多维数组返回字符串的json_encode;阵列”;而不是数据
- 如何将 AJAX 响应作为 JavaScript 数组返回
- 我正在尝试在 JS 中制作这个随机名称生成器.数组返回未定义
- .push() 多个对象进入 JavaScript 数组返回 'undefined'
- 如何按属性从可观察数组返回项
- 通过jquery发送的关联php数组返回[对象对象]
- 从 Javascript 中的对象数组返回单个属性的数组
- 循环遍历对象数组返回“未定义”
- 拼接数组返回空的序列
- Javascript 多维数组返回第一个值,然后失败
- Json 数组返回空值
- 从下划线.js中的数组返回一系列值
- for 语句不从数组返回值
- MongoDB从数组返回特定字段
- 试图将数组返回到表中的列表中
- Javascript中的二维数组返回未定义的数组
- 将函数数组作为布尔值数组返回