js 数组详细操作方法及解析合集(8)

  • 关于遍历的效率,可以看一下这篇详解JS遍历
  • 尽量不要在遍历的时候,修改后面要遍历的值
  • 尽量不要在遍历的时候修改数组的长度(删除/添加)
  • forEach
    定义: 按升序为数组中含有效值的每一项执行一次回调函数。

    语法:

    array.forEach(function(currentValue, index, arr), thisValue)
    参数:

    function(必须): 数组中每个元素需要调用的函数。

    // 回调函数的参数
    1. currentValue(必须),数组当前元素的值
    2. index(可选), 当前元素的索引值
    3. arr(可选),数组对象本身

    hisValue(可选): 当执行回调函数时this绑定对象的值,默认值为undefined

    关于forEach()你要知道:

    • 无法中途退出循环,只能用return退出本次回调,进行下一次回调。
    • 它总是返回 undefined值,即使你return了一个值。

    下面类似语法同样适用这些规则

    1. 对于空数组是不会执行回调函数的
    2. 对于已在迭代过程中删除的元素,或者空元素会跳过回调函数
    3. 遍历次数再第一次循环前就会确定,再添加到数组中的元素不会被遍历。
    4. 如果已经存在的值被改变,则传递给 callback 的值是遍历到他们那一刻的值。

    eg:

    let a = [1, 2, ,3]; // 最后第二个元素是空的,不会遍历(undefined、null会遍历)
    let obj = { name: 'OBKoro1' };
    let result = a.forEach(function (value, index, array) { 
     a[3] = '改变元素';
     a.push('添加到尾端,不会被遍历')
     console.log(value, 'forEach传递的第一个参数'); // 分别打印 1 ,2 ,改变元素
     console.log(this.name); // OBKoro1 打印三次 this绑定在obj对象上
     // break; // break会报错
     return value; // return只能结束本次回调 会执行下次回调
     console.log('不会执行,因为return 会执行下一次循环回调')
    }, obj);
    console.log(result); // 即使return了一个值,也还是返回undefined
    // 回调函数也接受接头函数写法

    every 检测数组所有元素是否都符合判断条件

    定义: 方法用于检测数组所有元素是否都符合函数定义的条件

    语法:

    array.every(function(currentValue, index, arr), thisValue)
    参数:(这几个方法的参数,语法都类似)

    function(必须): 数组中每个元素需要调用的函数。

    // 回调函数的参数
    1. currentValue(必须),数组当前元素的值
    2. index(可选), 当前元素的索引值
    3. arr(可选),数组对象本身

    thisValue(可选): 当执行回调函数时this绑定对象的值,默认值为undefined

    方法返回值规则:

    1. 如果数组中检测到有一个元素不满足,则整个表达式返回 false,且剩余的元素不会再进行检测。

    内容版权声明:除非注明,否则皆为本站原创文章。

    转载注明出处:http://www.heiqu.com/490.html