zoukankan      html  css  js  c++  java
  • 《JavaScript 高级程序设计》学习总结五(2)

    引言:本章节继续对引用类型进行总结。 总结内容概要:前面几个方法都是继续总结上一节的数组的方法,直到 Date类型。

    位置方法:

    ECMAScript 5 为数组实例添加了两个位置方法:indexOf()和 lastIndexOf()。这两个方法都接收两个参数:要查找的项和表示查找起点位置的索引(可选的,可有可无)。其中IndexOf()方法从数组头开始找,而lastIndexOf()从数组尾开始找。

    这两个项都返回要查找的项在数组中的位置,如果找不到则返回-1 。在比较第一个参数与数组中的每一项时,都会采用全等操作。

    支持它们的浏览器包括:IE9+、Firefox2+、Safari3+、Pera9.5+、和chrome。

    例子:var number=[1,2,3,4,5,6,7];

        alert(number.indexOf(4));// 3

     

    迭代方法:

    ECMAScript 5为数组定义了 5种迭代方法。每个方法接收两个参数:要在每一项运行的函数和运行该函数的作用域(可选的)——影响 this 的值。传入这些方法中的函数会接收三个参数:数组项的值,该项在数组中的位置,以及数组对象本身。

    1、every():对数组中的每一个项给定函数,如果该函数对每一项都返回true,则返回true 

    2、filter():对数组中的每一项给定函数,该函数会返回true 的项组成的函数。

    3、forEach():对数组中的每一项给定函数,这个方法没有返回值。

    4、map():对数组中的每一项给定函数,返回每次调用的结果组成的函数。

    5、some():对数组中的每一项给定函数,如果该函数对任意一项返回 true,则返回true .

    以上方法都不会修改数组中包含的值。(吐槽的是,看完这几个我没看懂到底说什么。)

    例子:

    var numbers = [1,2,3,4,5,4,3,2,1]; 
    var everyResult = numbers.every(function(item, index, array){ 
    return (item > 2); 
    }); 
    alert(everyResult); //false 
    var someResult = numbers.some(function(item, index, array){ 
    return (item > 2); 
    }); 
    alert(someResult); //true

    这里可以看到:every ()方法要全部返回true 结果才是true.而some 只需要一个能够返回 true 就可以直接返回true 了。

    而filter返回的是一个符合某种条件的数组。 

    例如:数组number = [1,2,1,3,5,3,4,9,6,9]; 
    var result = number.filter(function(item,index,array){ 
    return (item>5); 
    }); 
    alert(result); /[9,6,9]; 

    map和filter函数类似,同样是返回的是一个数组。不过,这个数组的每一项都是在原始数组中的对应项上运行传入函数的结果。例如: 

    var numbers = [1,2,3,4,5,6,7]; 
    var mapresult = numbers.map(function(item,index,array){ 
    return item*2; 
    }); 
    alert(mapresult);//[2,4,6,8,10,12,14];

    forEach() 是一个循环数组的方法。

    这些迭代方法支持的浏览器有,IE9+,Firefox2+,Safari3+,Opera 9.5+,chrome

    缩小方法:

    reduce(),reduceRight()。 
    迭代i数组中的所有值,返回一个按条件计算的最终值。 
    reduce()是从数组的逐个遍历 
    到最后。而reduceRight()则从数组的最后一项开始,向前遍历到第一项。 
    例如: 
    var values = [1,2,3,4,5]; 
    var sum = values.reduce(function(prev, cur, index, array){ 
    return prev + cur; 
    }); 
    alert(sum); //15

    第一次执行回调函数,prev 是1,cur 是2。第二次,prev 是3(1 加2 的结果),cur 是3(数组 
    的第三项)。这个过程会持续到把数组中的每一项都访问一遍,最后返回结果。 
    resuceRight()函数和reduce类似,不过是倒序。

    这些缩小方法支持的浏览器有,IE9+,Firefox2+,Safari3+,Opera 9.5+,chrome

    ------------------------------------以上就是继上一章节对数组的方法的总结因为这一章节是在内容有些多,所以我打算这一章节到此为止,下一节对Date 类型进行总结-------------------------------------------------------

  • 相关阅读:
    斐波那契数列 的两种实现方式(Java)
    单链表反转
    单链表合并
    两个有序list合并
    list去重 转载
    RemoveAll 要重写equals方法
    Java for LeetCode 138 Copy List with Random Pointer
    Java for LeetCode 137 Single Number II
    Java for LeetCode 136 Single Number
    Java for LeetCode 135 Candy
  • 原文地址:https://www.cnblogs.com/wxhhts/p/9436055.html
Copyright © 2011-2022 走看看