zoukankan      html  css  js  c++  java
  • JS中every()和some()的用法

    every()与some()方法都是JS中数组的迭代方法。

    every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true。

    some()是对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true。

    function isBigEnough(element, index, array) {
      return (element >= 10);
    }
     passed = [12, 5, 8, 130, 44].every(isBigEnough);
    //false
    passed = [12, 54, 18, 130, 44].every(isBigEnough);
    //  true
    passed = [2, 5, 8, 1, 4].some(isBigEnough);
    // false
    passed = [12, 5, 8, 1, 4].some(isBigEnough);
    // true
    

    在第 5 版时,every 被添加进 ECMA-262 标准;因此在某些实现环境中不被支持。你可以把下面的代码放到脚本的开头来解决此问题,该代码允许
    在那些没有原生支持 every 的实现环境中使用它。该算法是 ECMA-262 第5版中指定的算法,假定 Object 和 TypeError 拥有它们的初始值,
    且 fun.call 等价于Function.prototype.call。

    if (!Array.prototype.every)
    {
      Array.prototype.every = function(fun /*, thisArg */)
      {
        'use strict';
    
        if (this === void 0 || this === null)
          throw new TypeError();
    
        var t = Object(this);
        var len = t.length >>> 0;
        if (typeof fun !== 'function')
            throw new TypeError();
    
        var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
        for (var i = 0; i < len; i++)
        {
          if (i in t && !fun.call(thisArg, t[i], i, t))
            return false;
        }
    
        return true;
      };
    }
    

    Array.prototype.some()
    在第 5 版时,some 被添加进 ECMA-262 标准;这样导致某些实现环境可能不支持它。你可以把下面的代码插入到脚本的开头来解决此问题,
    从而允许在那些没有原生支持它的实现环境中使用它。该算法是 ECMA-262 第 5 版中指定的算法,假定 Object 和 TypeError 拥有他们的初始值,
    且 fun.call 等价于 Function.prototype.call。

    if (!Array.prototype.some)
    {
      Array.prototype.some = function(fun /*, thisArg */)
      {
        'use strict';
    
        if (this === void 0 || this === null)
          throw new TypeError();
    
        var t = Object(this);
        var len = t.length >>> 0;
        if (typeof fun !== 'function')
          throw new TypeError();
    
        var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
        for (var i = 0; i < len; i++)
        {
          if (i in t && fun.call(thisArg, t[i], i, t))
            return true;
        }
    
        return false;
      };
    }
    

    总结:

    方法区别

    every() 每一项都返回true才返回true
    some() 只要有一项返回true就返回true

    类似&&和||的关系

    本文整理自:https://www.cnblogs.com/leejersey/p/5483247.html
    本文整理自:http://www.cnblogs.com/yourstars/p/7822858.html

  • 相关阅读:
    策略模式
    模板方法模式

    kafka
    Linux下部署MongoDB
    Linux下安装ssdb
    ssdb常用知识点
    Eclipse 的 Java Web 项目环境搭建
    PLSQL连接Oracle
    redis书籍
  • 原文地址:https://www.cnblogs.com/smart-girl/p/10507492.html
Copyright © 2011-2022 走看看