JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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"]; }));

映射版本返回正确的结果.然而,过滤的版本返回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>

解决方法

不,过滤方法不会返回未烧取的数组.它返回一个包含内部函数返回true的项的数组.

由于您没有从内部函数返回一个布尔值,所以该值将转换为布尔值,因此将对象引用转换为true.因此,它返回一个包含原始数组中所有项目的新数组.

过滤方法与map方法不同. map方法用于转换数组的每个项目,而使用过滤器方法来选择数组的某些项目.比较方法之间的性能是有道理的,因为只有其中一个执行您想要的操作.

大佬总结

以上是大佬教程为你收集整理的Javascript过滤器vs地图问题全部内容,希望文章能够帮你解决Javascript过滤器vs地图问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。