zoukankan      html  css  js  c++  java
  • javascript 中的借鸡生蛋

    如题所说,其实指的是 js 中的内置函数和 apply 的结合使用。这种用法很讨巧,读过 jQuery 源码的小伙伴都知道,它在里面被应用的非常广泛和精妙!

    梨子:找出一个数组中的最大值和最小值

    普遍的做法就是循环遍历数组,进行比较,写出来的代码看着像石榴姐一样,虽然是一个美女,但总感觉有点别扭,怎样把她变成像秋香一样优雅迷人呢?还记得 Math.max 吗

    var numbers = [5, 6, 2, 3, 7];
    
    /* using Math.min/Math.max apply */
    var max = Math.max.apply(null, numbers); /* This about equal to Math.max(numbers[0], ...) or Math.max(5, 6, ..) */
    var min = Math.min.apply(null, numbers);

    假如数组很大怎么办呢?把它切段循环传入

    function minOfArray(arr) {
      var min = Infinity;
      var QUANTUM = 32768;
    
      for (var i = 0, len = arr.length; i < len; i += QUANTUM) {
        var submin = Math.min.apply(null, arr.slice(i, Math.min(i + QUANTUM, len)));
        min = Math.min(submin, min);
      }
    
      return min;
    }
    
    var min = minOfArray([5, 6, 2, 3, 7]);

    参考:MDN

  • 相关阅读:
    compass 制作css sprites
    net模块
    javascript -- 代理模式
    javascript -- 单例模式
    js 对象的浅拷贝和深拷贝
    js 对象的封装,继承,多态的理解
    this,call,apply
    flex 实现圣杯布局
    ubuntu中安装mongodb
    devDependencies和dependencies的区别
  • 原文地址:https://www.cnblogs.com/kuangliu/p/5132767.html
Copyright © 2011-2022 走看看