作爲跨過一系列對象的最小/最大值的延續,我想知道過濾器vs地圖的性能比較。Javascript過濾器vs地圖問題
因此,我將我的代碼中的值放在一起進行測試,以查看FireBug中的結果。
這是代碼:
var _vec = this.vec;
min_x = Math.min.apply(Math, _vec.filter(function(el){ return el["x"]; }));
min_y = Math.min.apply(Math, _vec.map(function(el){ return el["x"]; }));
的map
PED版本返回正確的結果。然而filter
ed版本返回NaN。打破它,逐步審查並最終檢查結果,看起來內函數返回屬性_vec
,但從filter
返回的實際數組是未經過濾的_vec
。
我相信我的使用filter
是正確的 - 任何人都可以看到我的問題嗎?
這裏有一個簡單的測試:
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>S:GTC Map Test</title>
</head>
<body>
<script type="text/javascript">
function vector(x,y,z) { this.x = x; this.y =y; this.z=z; }
var vec = [];
vec.push(new vector(1,1,1));
vec.push(new vector(2,2,2));
vec.push(new vector(2,3,3));
var _vec = vec;
min_x = Math.min.apply(Math, _vec.filter(function(el){ return el["x"]; }));
min_y = Math.min.apply(Math, _vec.map(function(el){ return el["x"]; }));
document.write("<br>filter = " + min_x);
document.write("<br>map = " + min_y);
</script>
</body>
</html>
稀釋。看來我誤解了過濾功能的工作原理。我的印象是它將一個修改後的對象返回給一個數組。 – 2010-03-14 16:50:07