String.prototype.indexOf()/Array.prototype.filter()/arguments

1. indexOf()方法返回调用String对象中第一次出现的指定值的索引,开始在 fromIndex进行搜索。

如果未找到该值,则返回-1。

语法

str.indexOf(searchValue[,fromIndex]);

参数

searchValue

一个字符串表示被查找的值。

fromIndex可选

表示调用该方法的字符串中开始查找的位置。可以是任意整数。默认值为 0。如果fromIndex < 0则查找整个字符串(如同传进了 0)。如果fromIndex >= str.length,则该方法返回 -1,除非被查找的字符串是一个空字符串,此时返回 str.length。

返回值

指定值的第一次出现的索引; 如果没有找到 -1。

描述

字符串中的字符被从左向右索引。首字符的索引(index)为 0,字符串stringName的最后一个字符的索引是stringName.length - 1。

indexOf方法区分大小写,

2.filter()方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组。

functionisBigEnough(value){returnvalue>=10;}varfiltered=[12,5,8,130,44].filter(isBigEnough);// filtered is [12, 130, 44]

语法

var new_array = arr.filter(callback[,thisArg])

参数

callback

用来测试数组的每个元素的函数。调用时使用参数 (element, index, array)。

返回true表示保留该元素(通过测试),false则不保留。

thisArg

可选。执行callback时的用于this的值。

返回值

一个新的通过测试的元素的集合的数组

描述

filter为数组中的每个元素调用一次callback函数,并利用所有使得callback返回 true 或等价于 true 的值的元素创建一个新数组。callback只会在已经赋值的索引上被调用,对于那些已经被删除或者从未被赋值的索引不会被调用。那些没有通过callback测试的元素会被跳过,不会被包含在新数组中。

callback被调用时传入三个参数:

元素的值

元素的索引

被遍历的数组

如果为filter提供一个thisArg参数,则它会被作为callback被调用时的this值。否则,callback的this值在非严格模式下将是全局对象,严格模式下为undefined。

Thethisvalue ultimately observable bycallbackis determined according to the usual rules for determining thethisseen by a function.

filter不会改变原数组。

filter遍历的元素范围在第一次调用callback之前就已经确定了。在调用filter之后被添加到数组中的元素不会被filter遍历到。如果已经存在的元素被改变了,则他们传入callback的值是filter遍历到它们那一刻的值。被删除或从来未被赋值的元素不会被遍历到。

3.arguments是一个类似数组的对象, 对应于传递给函数的参数。

语法

arguments

描述

arguments对象是所有函数中可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数的条目,第一个条目的索引从0开始。例如,如果一个函数传递了三个参数,你可以参考它们如下:

arguments[0]arguments[1]arguments[2]

参数也可以被设置:

arguments[1]='new value';

arguments对象不是一个Array。它类似于数组,但除了长度之外没有任何数组属性。例如,它没有pop方法。但是它可以被转换为一个真正的数组::

letargs=Array.prototype.slice.call(arguments);letargs=[].slice.call(arguments);

你还可以使用Array.from()方法或spread 运算符将 arguments 转换为真正的数组:

let args = Array.from(arguments);

let args = [...arguments];

对参数使用slice会阻止某些JavaScript引擎中的优化 (比如 V8 引擎 -更多信息)。

如果你关心它们,尝试通过遍历arguments对象来构造一个新的数组。

另一种方法是使用 被忽视的/鄙视/轻视,/看不起 Array构造函数作为一个函数:

let args = (

arguments.length === 1 ?

[arguments[0]] :

Array.apply(null, arguments)

);

如果Array generics可用的话,下面的代码可以作为替代:

varargs=Array.slice(arguments);

arguments对象仅在函数内部有效,在函数外部调用 arguments 对象会出现一个错误。

arguments的typeof返回'object'。

console.log(typeof arguments);

// 'object'

可以使用索引来确定各个arguments的类型。

console.log(typeof arguments[0]);

//这将返回单个参数的typeof。

如果你调用一个函数,当这个函数的参数数量比它显式声明的参数数量更多的时候,你就可以使用arguments对象。这个技术对于参数数量是一个可变量的函数来说比较有用。 你可以用arguments.length来得到参数的数量,然后可以用argumentsobject 来对每个参数进行处理。 (想要得到函数签名的参数数量, 请使用Function.length属性。)

属性

arguments.callee

指向当前执行的函数。

arguments.caller

指向调用当前函数的函数。

arguments.length

指向传递给当前函数的参数数量。

你可能感兴趣的:(String.prototype.indexOf()/Array.prototype.filter()/arguments)