JavaScript学习笔记
高阶函数
filter
filter也是一个常用的操作,它用于把Array
的某些元素过滤掉,然后返回剩下的元素。实现一个“筛选”函数
filter()
把传入的函数依次作用于每个元素,然后根据返回值是true
还是false
决定保留还是丢弃该元素。return true是保留。
在一个Array
中,删掉偶数,只保留奇数:
1 2 3 4 5 | var arr = [1, 2, 4, 5, 6, 9, 10, 15]; var r = arr.filter( function (x) { return x % 2 !== 0; }); r; // [1, 5, 9, 15] |
把一个Array
中的空字符串删掉,可以这么写:
1 2 3 4 5 | var arr = [ 'A' , '' , 'B' , null , undefined, 'C' , ' ' ]; var r = arr.filter( function (s) { return s && s.trim(); // 注意:IE9以下的版本没有trim()方法 }); r; // ['A', 'B', 'C'] |
回调函数
filter()
接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array
的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身:
1 2 3 4 5 6 7 | 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 ; }); |
利用filter
,可以巧妙地去除Array
的重复元素:
1 2 3 4 5 6 7 8 9 | 'use strict' ; var r, arr = [ 'apple' , 'strawberry' , 'banana' , 'pear' , 'apple' , 'orange' , 'orange' , 'strawberry' ]; r = arr.filter( function (element, index, self) { return self.indexOf(element) === index; }); alert(r.toString()); |
sort() 排序算法
通常规定,对于两个元素x
和y
,如果认为x < y
,则返回-1
,如果认为x == y
,则返回0
,如果认为x > y
,则返回1
1 2 3 4 5 6 7 8 | // 看上去正常的结果: [ 'Google' , 'Apple' , 'Microsoft' ].sort(); // ['Apple', 'Google', 'Microsoft']; // apple排在了最后: [ 'Google' , 'apple' , 'Microsoft' ].sort(); // ['Google', 'Microsoft", 'apple'] // 无法理解的结果: [10, 20, 1, 2].sort(); // [1, 10, 2, 20] |
sort()
方法也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序。
要按数字大小排序,我们可以这么写:
1 2 3 4 5 6 7 8 9 10 | 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] |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!