作为我的最小/最大跨越一组对象的延续,我想知道过滤器与地图的性能比较.
所以我把代码中的值放在一起,看看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"]; }));
映射版本返回正确的结果.然而,过滤的版本返回NaN.打破它,逐步通过并最终检查结果,内部函数会显示_vec的x属性,但是从过滤器返回的实际数组是未过滤的_vec.
我相信我的使用过滤器是正确的 – 任何人可以看到我的问题吗?
这是一个简单的测试:
<!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.map(function(el){ return el["x"]; })); document.write("<br>filter = " + min_x); document.write("<br>map = " + min_y); </script> </body> </html>