📜  Underscore.js _.sortBy函数(1)

📅  最后修改于: 2023-12-03 15:20:50.433000             🧑  作者: Mango

Underscore.js _.sortBy 函数介绍

Underscore.js是一个优秀的JavaScript工具库,为JavaScript提供了一系列常用的函数和工具。其中,_.sortBy是一个非常常用的函数,可以对集合中的元素按照指定的规则排序,并返回排序后的集合。

函数语法
_.sortBy(list, iteratee, [context])
  • list: 需要排序的集合。
  • iteratee:一个函数,用于返回正在迭代的元素的序列化值,用于排序。
  • context:可选参数。函数中的this指向该参数。
  • 返回值:排序后的集合。
示例
var arr = [3, 8, 1, 0, 9, 5];

_.sortBy(arr, function(num) {
    return Math.sin(num);
});
// 返回 [8, 3, 5, 9, 1, 0]

在这个示例中,我们创建了一个数字数组,然后通过_.sortBy函数排序。我们使用了Math.sin函数作为迭代器,因此数组按sine值的顺序进行了排序。

序列化函数iteratee

.sortBy函数的iteratee参数指定了在排序中要使用的函数。这个函数返回转换后的基于元素的值。如果没有指定iteratee函数,.identity函数将被使用,该函数返回其参数。

下面是一个根据元素名称属性对集合进行排序的的例子:

var characters = [
    { name: "harry", house: "gryffindor" },
    { name: "ron", house: "gryffindor" },
    { name: "cho", house: "ravenclaw" },
    { name: "cedric", house: "hufflepuff" }
];

_.sortBy(characters, function(character) {
    return character.name;
});

// 返回  [{ name: "cedric", house: "hufflepuff" }, { name: "cho", house: "ravenclaw" }, { name: "harry", house: "gryffindor" }, { name: "ron", house: "gryffindor" }]

在这个示例中,我们传递了一个函数,该函数返回一个包含每个角色的名称的字符串,_.sortBy根据名称对我们的数组进行了排序。

上下文参数

第三个参数,上下文参数,指定了函数内部的this关键字。如果没有指定上下文参数,函数将使用全局对象(通常是window)作为上下文。

使用上下文参数时,请记住this仅在被使用的函数中才会被引用。如果您定义的iteratee函数中引用了this,则需要传递上下文参数,Without上下文参数将导致该函数中的this无效。

以下是带有上下文参数的示例:

var context = {
    multiplier: 5
};

var numbers = [1, 2, 3, 4, 5];

_.sortBy(numbers, function(num) {
    return num * this.multiplier;
}, context);

// 返回 [1, 2, 3, 4, 5]
总结

Underscore.js 的 _.sortBy 函数是一个非常有用的函数,用于排序集合中的数据。你可以指定一个序列化函数来定制排序规则,并且还可以使用上下文参数制定函数中的this对象。这个函数的强大之处在于它非常容易使用,即使是初学者也能快速理解其工作原理。