gpt4 book ai didi

javascript - 将函数包装到另一个函数中

转载 作者:行者123 更新时间:2023-11-30 12:27:11 24 4
gpt4 key购买 nike

我有使用 lodash 按对象属性对对象数组进行排序的代码。这很简单:

_.sortBy(data.cycles, "id");

但是,我发现 data.cycles[].id 可能是一个字符串,所以我必须在将每个属性传递给 _.sortBy 之前将其转换为数字.有什么优雅的方法吗?我想我应该以某种方式结合 _.propertyparseInt,但我不知道如何结合。

data.cycles 可能如下所示:

[
{
"id": "20",
"name": "John"
},
{
"id": "15",
"name": "Sarah"
},
{
"id": "158",
"name": "Bill"
},
{
"id": "-6",
"name": "Jack"
},
{
"id": "59",
"name": "Bob"
}
]

最佳答案

我会写一个sortBy()回调如下:

var collection = [
{ id: '20', name: 'John' },
{ id: 15, name: 'Sarah' },
{ id: 158, name: 'Bill' },
{ id: '-6', name: 'Jack' },
{ id: 59, name: 'Bob' }
];

_.sortBy(collection, _.flow(_.property('id'), parseInt));
// →
// [
// { id: '-6', name: 'Jack' },
// { id: 15, name: 'Sarah' },
// { id: '20', name: 'John' },
// { id: 59, name: 'Bob' },
// { id: 158, name: 'Bill' }
// ]

flow()当您想从多个函数中组合出一个回调函数时,function 很有用,它只是将输出转发给行中的下一个函数。 property()函数返回一个函数,该函数从其参数中获取指定的属性名称。这是 id,它会传递给 parseInt()

我们实际上是在同时进行映射和排序。除了作为单行代码之外,这还有一个效率优势:它不必对整个集合进行两次迭代。这对于较小的集合不是什么大问题,但对于较大的集合,影响是显而易见的。

关于javascript - 将函数包装到另一个函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28970676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com