js中every用法_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

类似&&和||的关系

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值