一些数组的方法

排序

  • Array.reverse() 反转数组
  • array.sort() 数组元素按升序排列(先比较第一位数的大小,相同则比较第二位)
    • 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
    • 如果想按照其他标准进行排序,就需要提供比较函数作为参数传入,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
    • 若 a 小于 b,在排序后的数组中 a 应该出现在 b - 之前,则返回一个小于 0 的值。
    • 若 a 等于 b,则返回 0。
    • 若 a 大于 b,则返回一个大于 0 的值。

    var array = [1,3,2,5,10,15]
    array.sort()  //[1,10,15,2,3]得到不是想要的从大到小排序

    function compare(value1,value2){
        if(value1 < value2){
            return -1
        }else if(value1 > value2){
            return 1
        }else {
            return 0
        }
    }
    array.sort(compare)  // [1,2,3,5,10,15] 把compare作为参数传递给      sort()方法

    // 对于数值类型的话,函数可以优化位
    function compare(value1 value2){
        return value2-value1
    }
    ```
#### 队列方法和栈方法
- **array.shift()**  // 在数组前面删除一项,返回的是删除项
- **array.unshift(value1,...)** // 在数组前面添加项,返回新数组
- **array.push(value1,...)**  // 在数组后面添加项
- **array.pop()**  / /在数组后面删除项

#### 转换方法
- **array.join()**  // 将数组转换位一个字符串,默认是逗号链接
- **array.toString(**) // 将数组转化为一个字符串,逗号连接
- **array.valueOf()**  // 获取属性??包括length、内容

#### 操作方法
- **array1.concat(value1,array2)**  // 拼接数组,返回的是新数组
- array.slice(起始位置,结束位置)  // 返回指定区间的项,是数组,(结束位置不要),不改变原数组
- **array.splice(0,2)**  // 删除数组前两项,返回删除项,为数组
- **array.splice(2,0,"red","yellow")** // 从第二个后面添加两项,若第二个参数是其他数,返回[],例如1,则表示的是删除当前位置2的项,然后再从位置2开始插入字符串。

#### 位置方法
- **Array.indexOf()** 从数组的开头(位置为0)开始向后查询,返回指定数组项在数组中找到的第一索引值

       arr.indexOf(searchElement[, fromIndex = 0])
       searchElement: 是指定要查找的数组项
       fromIndex: 开始查找的位置。
        

- **lastIndexOf()** 和indexOf查找的顺序相反,返回指定数组项在数组中找到的倒数第一索引值


*字符串的indexOf和数组的indexOf又不一样,stringObject.indexOf(searchvalue,fromindex)方法是检测指定的字符(searchuvalue)是否存在,fromindex指定开始检索的位置,默认是从头开始检测*

#### 迭代方法
- **array.every(function(item,index,array){})** // 对数组每一项运行给定函数,如果该函数对每一项都返回true,则返回true,
item是数组每一项元素,index是每项元素的下标,array则是该数组
- **array.filter(function(item,index,array){})** // 对数组的每一项运行给定的函数,返回该函数会返回true项组成的数组
- **array.forEach(function(item,index,array){})**  // 对数组中的每一项运行给定的函数,该方法没有返回值(用得较多)
- **array.map(function(item,index,array){})** // 对数组中每一项运行给定的函数,返回每次函数调用的结果组成的数组
- **array.some(function(item,index,array){})**  // 对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true

**迭代方法都不会改变原数组**

#### 归并方法
- **array.reduce(function(prev,cur,index,array){})** // 逐个遍历到最后,pre代表前一项,也就是上一次的return的结果,cur代表当前遍历的项,index代表当前项的指针,array代表当前数组对象,这个函数返回的任何值都会作为第一个参数自动传给下一项


var values = [1,2,3,4,5]
var sum = values.reduce(function(pre,cur,index,array){
return pre + cur
})
alert(sum) // 15

- **reduceRight(function(prev,cur,index,array){})** // 和上面的类似,只不过是从后面开始遍历

你可能感兴趣的:(一些数组的方法)