我過濾使用其天然.filter()
方法給定陣列:倒置陣列
var a = [1,2,3,4,5];
var b = a.filter(function(v) {
return v > 2;
});
即創建新陣列([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;
};
}
是否有效?還是我可以做得更好?
任何其他(更優雅)的想法如何解決這個問題?
這看起來像一個非常優雅的解決方案(雖然我想不必在通過兩個空(或不空)數組更符合'filter')。 – AKX
感謝您的回覆。但我認爲我不能真正使用它。我需要循環遍歷源數組以實際創建負值。所以我最終會再次循環兩次不是嗎? –
@AndreMeinhold您可以更新與再源陣列的負面例子,預期肯定和你的問題? – raina77ow