JavaScript的array方法

JavaScript高级函数

1.map/reduce

map()

map()是array的一个方法javascript

做用: 对array中每个元素调用自定义函数java

'use strict';
function pow(x){
return x*x;
}
var arr=[1,2,3,4,5]
var newarray=arr.map(pow)

map的回调函数有三个参数:算法

callback(currentValue, index, array)一般只要第一个参数数组

PS: map()传入的参数是pow,即函数对象自己函数

一般map调用的自定义方法只包含一个参数测试

reduce()

reduce()也是array的一个方法code

做用: 从数组的前两个元素开始,做为函数参数,传入函数获得结果,对象

结果再和下一个数组元素再一次调用函数,直到数组尽头排序

[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)

PS: 一般reduce()调用的自定义方法只包含两个个参数索引

2.filter(筛选)

做用:把Array的某些元素过滤掉,而后返回剩下的元素.

map()相似,Arrayfilter()也接收一个函数。和map()不一样的是,filter()把传入的函数依次做用于每一个元素,而后根据返回值是true仍是false决定保留仍是丢弃该元素。

//去掉空字符串

var arr = ['A', '', 'B', null, undefined, 'C', '  '];
var r = arr.filter(function (s) {
    return s && s.trim(); // 注意:IE9如下的版本没有trim()方法
});
r; // ['A', 'B', 'C']

回调函数

一般咱们仅使用第一个参数,表示Array的某个元素。回调函数还能够接收另外两个参数,表示元素的位置和数组自己:

var arr = ['A', 'B', 'C'];
var r = arr.filter(function (element, index, self) {
    console.log(element); // 依次打印'A', 'B', 'C'
    console.log(index); // 依次打印0, 1, 2
    console.log(self); // self就是变量arr
    return true;
});

筛选素数:

function get_primes(arr){
if(elem===1){
return false;
}
for(var i=2;i<=elem/2;i++){
if(elem%i==0)
{
return false;
}
}
return true;
});
return x;
}

PS: 关键在于正确实现一个“筛选”函数

3.sort(排序)

默认排序会把全部元素转成String在排序,根据一个元素的ASCII值进行排序(非递减)(TimSort算法)

两两比较,当回调函数返回值大于0时,交换元素值

自定义数字排序

'use strict' 
var arr=[10,20,1,2];

arr.sort(function(x,y){
    if (x < y) {
        return -1;
    }
    if (x > y) {
        return 1;
    }
    return 0;
});
console.log(arr); // [1, 2, 10, 20]

数字倒序排列

var arr = [10, 20, 1, 2];
arr.sort(function (x, y) {
    if (x < y) {
        return 1;
    }
    if (x > y) {
        return -1;
    }
    return 0;
}); // [20, 10, 2, 1]

4.其余的Array方法

every()和some()

做用: 能够判断数组的全部元素是否知足测试条件(经过函数提供)

  • every()是所有知足的时候返回true,一个不知足返回false,并终止检测

  • some()是所有不知足的时候返回false,有一个知足就返回true

find()

做用: 查找第一个符合条件的元素

查找符合条件的第一个元素,若是找到了就返回这个元素,不然,返回undefined

findindex()

做用: 查找第一个符合条件的元素的索引

查找符合条件的第一个元素,找到这个元素就返回他的索引,若是没有找到就返回-1

forEach()

做用: 经常使用于遍历数组

(和map相似)把数组每一个元素依次传入函数,但不会返回新的数组.

相关文章
相关标签/搜索