📅  最后修改于: 2023-12-03 15:20:50.122000             🧑  作者: Mango
_.max
函数Underscore.js是很多前端开发者所熟知的一个工具库,它提供了很多常用的功能函数,能够帮助我们更快、更方便地完成开发工作。其中,_.max
函数是一个非常实用的函数,用于在一个集合中查找最大值。
Underscore.js _.max
函数的语法如下:
_.max(list, [iteratee], [context])
参数说明:
list
:必填参数,表示要找最大值的集合。可以是一个数组,也可以是一个对象。
iteratee
:可选参数,是用来确定每个元素的排序依据的函数。如果没有提供该参数,则默认比较元素的大小。
context
:可选参数,指定iteratee
函数的上下文。
_.max
函数会返回被找到的最大值。如果传入的集合是空的,则返回-Infinity
。
我们可以通过以下几个示例来学习_.max
函数的用法。
假设我们有一个数组,我们想找到其中最大的数字。我们可以这样使用_.max
函数:
var numbers = [1, 2, 3, 4, 5];
var result = _.max(numbers);
console.log(result); // 5
上述代码中,我们没有传入第二个参数iteratee
,因为默认情况下,_.max
函数会直接比较元素的大小来找到最大值。
假设我们有一个对象数组,每个对象有name
和age
两个属性,我们希望找到年龄最大的那个人。我们可以这样使用_.max
函数:
var people = [
{name: 'Andrew', age: 26},
{name: 'Tom', age: 30},
{name: 'John', age: 28}
];
var result = _.max(people, function(person) {
return person.age;
});
console.log(result); // {name: 'Tom', age: 30}
上述代码中,我们传入了一个函数作为第二个参数iteratee
,这个函数会根据每个对象的age
属性来确定大小关系。
我们可以通过context
参数来指定iteratee
函数的上下文。比如,我们有一个数组,每个元素都是一个学生对象,我们希望找到其中分数最高的那个学生,并且在iteratee
函数中,需要用到另外一个全局变量extreme
。我们可以这样使用_.max
函数:
var students = [
{name: 'Alice', score: 80},
{name: 'Bob', score: 90},
{name: 'Charlie', score: 85}
];
var extreme = 100;
var result = _.max(students, function(student) {
return student.score / extreme;
}, this);
console.log(result); // {name: 'Bob', score: 90}
上述代码中,我们指定了this
作为iteratee
函数的上下文,并且在函数中用到了外部的变量extreme
。