我正在尝试在一个简单的对象上使用 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];
};