String.prototype.indexOf()/Array

作者: jiegiser | 来源:发表于2017-05-10 22:41 被阅读4次

    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

        本文链接:https://www.haomeiwen.com/subject/blhntxtx.html