1

このフィルターがオブジェクトを返さないのはなぜですか?

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 に置き換えたこともわかります。同じこと。

コンテキストの問題だと思いますが、どこにあるのかわかりません。

4

2 に答える 2

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
});
于 2012-09-02T14:30:58.100 に答える
2

returnコールバック関数からのブール値が必要です:

var filteredEntries = myEntries.filter(
        function(entry){
            //me.isContainedBy(entry, keys) &&
            //entry.obj === obj
            return true;
        });
于 2012-09-02T14:30:59.847 に答える