非常教程

JavaScript参考手册

TypedArray

typedArray.filter

filter()创建新的类型化数组,含有所有通过了测试的元素,测试由提供的函数实现。这个方法的算法和Array.prototype.filter()相同。TypedArray是这里的类型化数组类型之一。

语法

typedarray.filter(callback[, thisArg])

参数

callback测试类型化数组每个元素的函数,以参数(element, index, typedarray)调用。 如果返回true则保留该元素,如果返回false则相反。thisArg可选可选,执行callback时作为this的值。

返回值

新的类型化数组,含有通过测试的元素

描述

filter方法对类型化数组中的元素调用提供的callback函数,并且会为callback返回 true 的那些元素构造新的类型化数组。callback只对拥有值的类型化数组下标调用。它不会对未定义的,被删除的或者没有赋值的下标调用。没有传给callback的类型化数组的元素只是简单跳过,不会包含在新数组中。

callback以三个参数调用:

  1. 元素的值

  1. 元素下标

  1. 被遍历的类型化数组对象

如果将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

Status

Comment

ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'TypedArray.prototype.filter' in that specification.

Standard

Initial definition.

ECMAScript 2017 Draft (ECMA-262)The definition of 'TypedArray.prototype.filter' in that specification.

Draft

浏览器兼容性

Feature

Chrome

Firefox (Gecko)

Internet Explorer

Opera

Safari

Basic support

45

38 (38)

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

38.0 (38)

No support

No support

No support

JavaScript

JavaScript 是一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。它已经由ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、IE、FireFox、Safari、Opera )支持。JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络