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属性。)
属性
指向当前执行的函数。
指向调用当前函数的函数。
指向传递给当前函数的参数数量。