JavaScript参考手册
TypedArray
typedArray.find
如果某个元素满足所提供的测试函数,find()
方法返回类型化数组中的值。否则返回undefined
。TypedArray是这里的类型化数组类型之一.
同时请参见findIndex()
方法,它返回了类型化数组中所发现元素的下标,而不是它的值。
语法
typedarray.find(callback[, thisArg])
参数
callback
用于在类型化数组中的每个元素上执行的函数,接受三个参数:element
要处理的类型化数组的当前元素。index
要处理的当前元素在类型化数组中的下标arrayfind
在其上调用的类型化数组thisArg
可选,执行callback
时的this
值。
返回值
如果元素通过了测试,则为该元素,否则为undefined
。
描述
find
方法对类型化数组中的每个元素执行一次 callback
函数,直到它找到一个使 callback
返回 true的元素。如果发现了一个这样的元素,find
方法将会立即返回该元素的值。否则,find
方法会返回undefined
。callback
只会对那些已经被赋值的索引调用。不会对那些被删除或从来没被赋值的索引调用。
callback
以三个参数调用:元素的值,元素索引,以及要遍历的数组对象。
如果将thisArg
参数提供给find
,它会在调用时传递给callback
,作为它的this
值。如果没有提供,会使用undefined
。
find
不修改在其上调用的类型化数组。
由find
处理的元素范围在callback
调用之前就确定了。 在find
调用之后添加到数组的元素不会由callback
访问。 如果类型化数组的现有元素被改变,或被删除,它们传给callback
的值是find
访问它们时候的值。已删除的元素不会被访问。
示例
在类型化数组中寻找质数
下面的示例在类型化数组中寻找质数(如果没有质数则返回undefined
)。
function isPrime(element, index, array) {
var start = 2;
while (start <= Math.sqrt(element)) {
if (element % start++ < 1) {
return false;
}
}
return element > 1;
}
var uint8 = new Uint8Array([4, 5, 8, 12]);
console.log(uint8.find(isPrime)); // 5
规范
Specification |
Status |
Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262)The definition of '%TypedArray%.prototype.find' in that specification. |
Standard |
Initial definition. |
ECMAScript 2017 Draft (ECMA-262)The definition of '%TypedArray%.prototype.find' in that specification. |
Draft |
|
浏览器兼容性
Feature |
Chrome |
Firefox (Gecko) |
Internet Explorer |
Opera |
Safari |
---|---|---|---|---|---|
Basic support |
No support |
37.0 (37.0) |
No support |
No support |
No support |
Feature |
Android |
Chrome for Android |
Firefox Mobile (Gecko) |
IE Mobile |
Opera Mobile |
Safari Mobile |
---|---|---|---|---|---|---|
Basic support |
No support |
No support |
37.0 (37.0) |
No support |
No support |
No support |
TypedArray相关
JavaScript 是一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。它已经由ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、IE、FireFox、Safari、Opera )支持。JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络