为什么这个过滤器永远不会返回任何对象?
NewHashMap.prototype.remove = function (keys, obj) {
// snip
var myEntries = this.entries;
var filteredEntries = myEntries.filter(
function(entry){
//me.isContainedBy(entry, keys) &&
//entry.obj === obj
true;
});
console.debug("entries ", myEntries.length);
console.debug("filtered ", filteredEntries.length);
// snip
}
更进一步,我在不同的背景下使用它,它的工作原理 您还看到我注释掉了我的实际过滤器要求,并将其替换为普通的True。同样的事情。
我猜这是一个上下文问题,但我看不到。
答案 0 :(得分:2)
除非true
来自匿名函数,否则return
无效。
var filteredEntries = myEntries.filter(
function(entry){
//me.isContainedBy(entry, keys) &&
//entry.obj === obj
return true;
});
或使用您的实际过滤器代码:
var filteredEntries = myEntries.filter(
function(entry){
return me.isContainedBy(entry, keys) && entry.obj === obj
});
答案 1 :(得分:2)
您需要return
来自回调函数的布尔值:
var filteredEntries = myEntries.filter(
function(entry){
//me.isContainedBy(entry, keys) &&
//entry.obj === obj
return true;
});