Javascript 为什么这个array.filter总是不返回任何内容?

Javascript 为什么这个array.filter总是不返回任何内容?,javascript,filter,Javascript,Filter,为什么此筛选器从不返回任何对象 NewHashMap.prototype.remove = function (keys, obj) { // snip var myEntries = this.entries; var filteredEntries = myEntries.filter( function(entry){ //me.isContainedBy(entry, keys) &&

为什么此筛选器从不返回任何对象

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替换了它们。同样的事情


我猜这是一个上下文问题,但我不知道在哪里。

你的
true
没有任何作用,除非你
从匿名函数返回它:

var filteredEntries = myEntries.filter(
    function(entry){
        //me.isContainedBy(entry, keys) &&
        //entry.obj === obj
        return true;
});
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
});

您的
true
不会执行任何操作,除非您
从匿名函数返回它:

var filteredEntries = myEntries.filter(
    function(entry){
        //me.isContainedBy(entry, keys) &&
        //entry.obj === obj
        return true;
});
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
});

您需要
从回调函数返回一个布尔值:

var filteredEntries = myEntries.filter(
    function(entry){
        //me.isContainedBy(entry, keys) &&
        //entry.obj === obj
        return true;
});
var filteredEntries = myEntries.filter(
        function(entry){
            //me.isContainedBy(entry, keys) &&
            //entry.obj === obj
            return true;
        });

您需要
从回调函数返回一个布尔值:

var filteredEntries = myEntries.filter(
    function(entry){
        //me.isContainedBy(entry, keys) &&
        //entry.obj === obj
        return true;
});
var filteredEntries = myEntries.filter(
        function(entry){
            //me.isContainedBy(entry, keys) &&
            //entry.obj === obj
            return true;
        });

啊!记事本++一定在我面前笑了大约一个小时了:PDOH!记事本++一定在我面前笑了大约一个小时了:P