我需要使用比较字符串和数字结果值来过滤数组。但是我输入过滤器数组值,而我输入两个值。否则我无法获得价值。这意味着如果只输入字符串值,我就无法获得过滤器数组值。
var fullArray = [{stringValue:"apple", numericValue:"40"}, {stringValue:"banana", numericValue:"20"}, {stringValue:"berry", numericValue:"30"}, {stringValue:"mango", numericValue:"10"}]
_.filter(fullArray, function(el){
if(el.stringValue.toLowerCase().indexOf(stringResultValue.toLowerCase())>=0 && el.numericValue==numericResultValue){
resultFilter.push(el);
}
});
答案 0 :(得分:1)
filter
期望一个函数返回应该在新数组中的元素的真实性,如果它们不应该返回虚假的东西。你应该有类似的东西:
var fullArray = [{stringValue:"apple", numericValue:"40"}, {stringValue:"banana", numericValue:"20"}, {stringValue:"berry", numericValue:"30"}, {stringValue:"mango", numericValue:"10"}]
resultFilter = _.filter(fullArray, function(el){
return el.stringValue.toLowerCase().indexOf(stringResultValue.toLowerCase()) >= 0 &&
el.numericValue === numericResultValue;
});
使用ES6语法的较短版本:
resultFilter = fullArray.filter(el =>
el.stringValue.toLowerCase().includes(stringResultValue.toLowerCase()) &&
el.numericValue === numericResultValue;
);