欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript的array方法

程序员文章站 2022-06-05 15:41:26
JavaScript高级函数 1.map/reduce map() map()是array的一个方法 作用: 对array中每一个元素调用自定义函数 map的回调函数有三个参数: callback(currentValue, index, array) 通常只要第一个参数 PS: map()传入的参 ......

javascript高级函数

1.map/reduce

map()

map()是array的一个方法

作用: 对array中每一个元素调用自定义函数

'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的一个方法

作用: 从数组的前两个元素开始,作为函数参数,传入函数得到结果,

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

[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类似)把数组每个元素依次传入函数,但不会返回新的数组.