TypedArray.prototype.some()

这个 some() 方法检测 TypedArray 的一些元素是否通过所提供函数的测试. 这个方法和 Array.prototype.some() 相同. TypedArraytyped array types 之一.

 

语法

typedarray.some(callback[, thisArg])

参数

callback
一个测试每个元素的函数,有3个参数:
currentValue
在typed array中,正在被测试的元素.
index
在typed array中,正在被测试元素的索引.
array
正在被调用的 typed array 本身.
thisArg
可选的.  callback  回调函数的 this 值 .

返回值

true 如果 callback 函数以任一数组元素为参数调用时,返回 truthy; 否则, false.

描述

对于 typed array 中的每个元素,some方法执行一次 callback,直到找到一个callback 返回 true 的元素. 如果一个元素被找到, some 立即返回 true. 否则, some 返回 false.

callback 期望3个参数: 元素的值, 元素的索引, 和被遍历的数组对象.

如果 some 提供 thisArg, 那么thisArg会作为 callback 调用时的this值. 否则, callback 调用时的 thisundefined.  callback 最终可观测的this 是根据  确定函数this的通常规则 所确定的.

some 被调用不会改变 typed array .

示例

Testing size of all typed array elements

以下示例测试typed array中的所有元素都大于10.

function isBiggerThan10(element, index, array) {
  return element > 10;
}
new Uint8Array([2, 5, 8, 1, 4]).some(isBiggerThan10); // false
new Uint8Array([12, 5, 8, 1, 4]).some(isBiggerThan10); // true

Testing typed array elements using arrow functions

Arrow functions 提供更段的语法做相同的测试.

new Uint8Array([2, 5, 8, 1, 4]).some(elem => elem > 10); // false
new Uint8Array([12, 5, 8, 1, 4]).some(elem => elem > 10); // true

Polyfill

由于没有名为 TypedArray 的全局对象, 必须在“as needed”的基础上进行填充.

// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some
if (!Uint8Array.prototype.some) {
  Object.defineProperty(Uint8Array.prototype, 'some', {
    value: Array.prototype.some
  });
}

假如你需要支持的过时JavaScript引擎不支持Object.defineProperty,最好不要使用Array.prototype方法填充,因为你不能让它们不可枚举.

标准

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
TypedArray.prototype.some
Standard Initial definition.
ECMAScript Latest Draft (ECMA-262)
TypedArray.prototype.some
Draft  

浏览器兼容

Update compatibility data on GitHub
Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
some Chrome Full support 45 Edge Full support 14 Firefox Full support 37 IE No support No Opera Full support 32 Safari Full support 10 WebView Android Full support 45 Chrome Android Full support 45 Firefox Android Full support 37 Opera Android No support No Safari iOS Full support 10 Samsung Internet Android Full support 5.0 nodejs Full support 4.0.0

Legend

Full support  
Full support
No support  
No support

参阅