TypedArray.prototype.filter()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
filter()
创建新的类型化数组,含有所有通过了测试的元素,测试由提供的函数实现。这个方法的算法和 Array.prototype.filter()
相同。TypedArray 是这里的类型化数组类型之一。
语法
filter(callbackFn)
filter(callbackFn, thisArg)
参数
callback
-
测试类型化数组每个元素的函数,以参数
(element, index, typedarray)
调用。如果返回true
则保留该元素,如果返回false
则相反。 thisArg 可选
-
可选,执行
callback
时作为this
的值。
返回值
新的类型化数组,含有通过测试的元素
描述
filter
方法对类型化数组中的元素调用提供的 callback
函数,并且会为callback
返回 true 的那些元素构造新的类型化数组。 callback
只对拥有值的类型化数组下标调用。它不会对未定义的,被删除的或者没有赋值的下标调用。没有传给callback
的类型化数组的元素只是简单跳过,不会包含在新数组中。
callback
以三个参数调用:
- 元素的值
- 元素下标
- 被遍历的类型化数组对象
如果将 thisArg
参数提供给 filter
,它会在调用时传递给 callback
,作为它的 this
值。否则,会传递 undefined
作为它的 this
值。callback
最终观测到的 this
值由用于决定函数可见的 this
值的一般规则来决定。
filter()
不改变在其上调用的类型化数组。
由 filter
处理的元素范围在callback
调用之前就确定了。在 filter
调用之后添加到数组的元素不会由 callback
访问。如果类型化数组的现有元素被改变,或被删除,它们传给callback
的值是filter
访问它们时候的值。已删除的元素不会被访问。
示例
过滤所有较小的值
下面的示例使用了 filter()
来创建过滤后的类型化数组,小于 10 的元素都被移除了。
function isBigEnough(element, index, array) {
return element >= 10;
}
new Uint8Array([12, 5, 8, 130, 44]).filter(isBigEnough);
// Uint8Array [ 12, 130, 44 ]
使用箭头函数过滤类型化数组的元素
箭头函数 为相同测试提供了更短的语法。
new Uint8Array([12, 5, 8, 130, 44]).filter((elem) => elem >= 10);
// Uint8Array [ 12, 130, 44 ]
规范
Specification |
---|
ECMAScript Language Specification # sec-%typedarray%.prototype.filter |
浏览器兼容性
BCD tables only load in the browser