Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何优化此函数以使任意数量的div具有相同的高度?_Javascript_Jquery - Fatal编程技术网

Javascript 如何优化此函数以使任意数量的div具有相同的高度?

Javascript 如何优化此函数以使任意数量的div具有相同的高度?,javascript,jquery,Javascript,Jquery,我想知道您是否可以帮助我减少以下函数中的总操作数 function equi_hghts (S) { /* S: Array of strings which are selectors of elements which are to be given the same height */ var n = S.length; var ES = []; /* Elements selected by S */ for (var i = 0; i < n; ++i)

我想知道您是否可以帮助我减少以下函数中的总操作数

function equi_hghts (S)
{
/* S: Array of strings which are selectors of elements which are to be given the same height */
   var n = S.length;
   var ES = []; /* Elements selected by S */
   for (var i = 0; i < n; ++i)
      ES.push($(S[i]));
   var maxHeight = 0;
   for (var i = 0; i < n; ++i)
   {
       var thisHeight = ES[i].height;
       if (thisHeight > maxHeight)
           maxHeight = thisHeight;
   }
   for (var i = 0; i < n; ++i)
   {
       ES[i].height(maxHeight);
   }
}
功能均衡 { /*S:字符串数组,这些字符串是给定相同高度的元素的选择器*/ var n=S.长度; 变量ES=[];/*由S选择的元素*/ 对于(变量i=0;i最大高度) 最大高度=此高度; } 对于(变量i=0;i 例如,我知道块

   for (var i = 0; i < n; ++i)
   {
       ES[i].height(maxHeight);
   }
for(变量i=0;i
将有1个无用的操作,因为一个div将被设置为其已达到的高度。我也在寻找一种方法来减少for循环的数量

还有另一件事会有帮助:在下面这段之后

for (var i = 0; i < n; ++i)
   ES.push($(S[i]));
for(变量i=0;i
我想删除为
S
分配的内存。谢谢你。

类似

var maxHeight = S.map($)
    .reduce(function(prev,curr){
        return Math.max(prev,curr.height());
    },0);
$(S.join(",")).height(maxHeight);


我喜欢这种方法。将jQuery函数传递给map非常出色,最后的数组连接也是如此。但是,这将导致每个元素有2个DOM查找。我想说这是为了可读性而优化的,但是为了提高性能,您可以对每个元素进行单个查找。
var q=$(S.join(","));
q.height(
    q.toArray().reduce(function(prev,curr){
        return Math.max(prev,curr.height());
    },0));