学会这些javascript中的几个常用的高阶函数,快速你的提升生产力

3 篇文章 0 订阅

高阶函数配合箭头函数使用,使代码更简洁

数组的find()函数

语法数组.find(回调函数)返回第一个符合条件的数组元素,不影响原数组,如果一个都匹配不上,就返回undefined

const numbers = [1,2,3,4,5,6]
const findNum =numbers.find(item=>item>4) // 满足条件的有5和6
console.log(findNum); // 但只打印5

支持对象查找,虽然查找的是id,返回却是id对应的整个对象

const users = [
    { id: 1, uname: '张三' },
    { id: 2, uname: '李四' },
    { id: 3, uname: '王五' },
    { id: 4, uname: '赵六' }]

const user = users.find(item => item.id > 2) // 满足条件的有id3和4
console.log(user); // 但只打印{id: 3, uname: '王五'}

数组的filter()函数

语法数组.filter(回调函数)返回一个装有所有符合条件的旧数组元素的新数组,不影响原数组,如果没有匹配的值,就返回一个空数组

const numbers = [1,2,3,4,5,6]
const findNum =numbers.filter(item=>item>4) // 满足条件的有5和6
console.log(findNum); // 打印5和6

const users = [
    { id: 1, uname: '张三' },
    { id: 2, uname: '李四' },
    { id: 3, uname: '王五' },
    { id: 4, uname: '赵六' }]

const user = users.filter(item => item.id > 2) // 满足条件的有id3和4
console.log(user);
// 打印结果
//     {
//         "id": 3,
//         "uname": "王五"
//     },
//     {
//         "id": 4,
//         "uname": "赵六"
//     }
// ]

数组的map()函数

语法数组.map(回调函数)返回一个将原数据每个元素用回调函数处理过的新数组,不影响原数组,如果没有匹配的值,就返回一个空数组

const numbers = [1,2,3,4,5,6]
const findNum =numbers.map(item=>item+10) // 原数组每个元素分别+10
console.log(findNum); // [11,12,13,14,15,16]

数组的foreach()函数

语法数组.map(回调函数)用来对原数组每个元素进行遍历迭代,不影响原数组,注意该遍历除了异常,否则不会停止。也不能根据索引做其它操作

const numbers = [1,2,3,4,5,6]
let total = 0
numbers.forEach(item=>total+=item) // 累加求和
console.log(total); //21

reduce():

对数组中的每个元素应用一个函数,并将结果累积到一个值上。最终返回累积的结果。

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((pre, current) => pre + cuttent, 0);
console.log(sum); // 15

在这个例子中,reduce() 方法对数组中的每个元素应用一个函数,将它们累加到一个初始值为0的累加器中。最终,reduce() 方法返回累加器中所有元素的总和。

some():

对数组中的每个元素应用一个条件,只要有一个元素满足条件就返回true,否则返回false。

const numbers = [1, 2, 3, 4, 5];
const hasEvenNumber = numbers.some(number => number % 2 === 0);
console.log(hasEvenNumber); // true

在这个例子中,some() 方法对数组中的每个元素应用一个条件,查找是否有偶数。由于数组中存在偶数,因此 some() 方法返回 true。

every():

对数组中的每个元素应用一个条件,只有所有元素都满足条件才返回true,否则返回false。

const numbers = [1, 2, 3, 4, 5];
const allEvenNumber = numbers.every(number => number %2 === 0);
console.log(allEvenNumber); // false

在这个例子中,every() 方法对数组中的每个元素应用一个条件,检查它们是否都是偶数。由于数组中存在奇数,因此 every() 方法返回 false。

sort():

对数组进行排序,默认按照Unicode编码排序,可以传入一个比较函数来指定排序规则。

const fruits = ['apple', 'banana', 'orange', 'pear'];
fruits.sort();
console.log(fruits); // ["apple", "banana", "orange", "pear"]

在这个例子中,sort() 方法对水果数组进行排序,默认按照Unicode编码排序。由于字母"a"在Unicode编码中比"b"小,所以"apple"排在"banana"的前面。如果需要按照自定义规则排序,可以传入一个比较函数作为参数。

要对数字数组进行排序,可以使用 sort() 方法并传入一个比较函数作为参数。比较函数应当返回一个负数、零或正数,表示两个元素的相对顺序。

以下是一个比较函数的示例,用于按照升序对数字数组进行排序:

const numbers = [5, 3, 1, 2, 4];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 2, 3, 4, 5]

在这个例子中,比较函数 (a, b) => a - b 将会根据数字的大小来决定它们的相对顺序。如果返回结果为负数,则表示 a 应该排在 b 前面;如果返回结果为零,则表示 a 和 b 相等;如果返回结果为正数,则表示 a 应该排在 b 后面。

如果要按照降序对数字数组进行排序,可以将比较函数改为 (a, b) => b - a:

const numbers = [5, 3, 1, 2, 4];
numbers.sort((a, b) => b - a);
console.log(numbers); // [5, 4, 3, 2, 1]

在这个例子中,比较函数 (a, b) => b - a 返回的结果相反,所以数组按照降序排列。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值