0

シンプルなオブジェクトで underscore.js を使用しようとしています:

var tab = {
    1: "obj1",
    4: "obj4",
    8: "obj8"
};

私がやりたいことは、キー値がそれよりも高い要素を単純に削除することnです。

function trimFrom(obj, n){
    return _(obj).filter(function(el, id){
        return id <= n;
    });
};

var tab2 = trimFrom(tab, 5)

さて、私が表示するときに期待していることtab2は次のとおりです。

tab2: Object
 1: "obj1",
 4: "obj4"

しかし、私が得ているのは次のとおりです。

tab2: Array[2]
 0: "obj1"
 1: "obj4"

var tab = trimFrom(tab, 5)出力をオブジェクトとして保持するにはどうすればよいですか? また、値のコピーを避けるなどの操作を行わなくても、パラメーターとして渡されたオブジェクトに結果を直接適用する方法はありますか?

編集: 私のように、渡されたオブジェクトを直接変更したい場合は、次のようにします。

function trimFrom(obj, n){
    for(var key in obj)
        if(key > n)
            delete obj[key];
};
4

1 に答える 1