【前端入门】回调函数与排序算法,分享学到的知识点

110 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情

  • filter、回调函数
  • sort、排序算法

回调函数

首先回调函数就是一个函数,形式上和其他函数没有半点区别。

filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。filter()接收的回调函数,其实可以有多个参数。

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

通常我们仅使用第一个参数,表示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;
});

排序算法

Arraysort()方法默认把所有元素先转换为String再排序,sort()方法也是一个高阶函数,支持接收一个比较函数来实现自定义的排序。

如正序排序:

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

sort()方法会直接对Array进行修改,它返回的结果仍是当前Array

var a1 = ['B', 'A', 'C'];
var a2 = a1.sort();
a1; // ['A', 'B', 'C']
a2; // ['A', 'B', 'C']
a1 === a2; // true, a1和a2是同一对象

最后

以上习题&笔记从大佬们的论坛学习而来,特感谢大佬们的知识分享~ (学习技术知识,果然要看大佬们的技术博客,大家有好的推荐也欢迎指引我这个小白哈,感恩!)

附上学习链接,感谢这些大佬出题和解答:

www.liaoxuefeng.com/wiki/102291…

wangdoc.com/javascript/…