我正在使用其本机方法过滤给定的数组:.filter()
var a = [1,2,3,4,5];
var b = a.filter(function(v) {
return v > 2;
});
这将创建新的 Array ( [3,4,5]
)。现在,我还想将过滤后的值放在另一个数组中。我在这里最好的选择是什么?我是不是该
- 将删除的值推送到同一过滤方法中的新数组中?
- 编写一个反转函数并在过滤后应用它?
要使用第一个选项,它可能会这样结束:
var b = a.filter(function(v) {
return v > 2 || !c.push(v);
});
我对这个解决方案的问题是,它有点混合了两种不同的东西,对于将来阅读代码的人来说可能会非常混乱。作为替代方案,我可以调用类似
c = invert(a,b);
function invert(source, compare) {
return source.filter(filterPositives);
function filterPositives(v) {
return compare.indexOf(v) === -1;
};
}
那有效吗?或者我可以做得更好吗?
任何其他(更优雅)的想法如何解决这个问题?