跳到主要内容

useSorted

分类
导出大小
309 B
上次更改
8 个月前

响应式排序数组

演示

输入
输出: [ "1", "7", "17", "18", "20", "38", "52", "53", "83", "85", "86", "87", "92", "96", "97" ]
对象属性排序
输入
[ { "name": "John", "age": 40 }, { "name": "Jane", "age": 20 }, { "name": "Joe", "age": 30 }, { "name": "Jenny", "age": 22 } ]
输出
[ { "name": "Jane", "age": 20 }, { "name": "Jenny", "age": 22 }, { "name": "Joe", "age": 30 }, { "name": "John", "age": 40 } ]

用法

ts
import { 
useSorted
} from '@vueuse/core'
// general sort const
source
= [10, 3, 5, 7, 2, 1, 8, 6, 9, 4]
const
sorted
=
useSorted
(
source
)
console
.
log
(
sorted
.
value
) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console
.
log
(
source
) // [10, 3, 5, 7, 2, 1, 8, 6, 9, 4]
// object sort const
objArr
= [{
name
: 'John',
age
: 40,
}, {
name
: 'Jane',
age
: 20,
}, {
name
: 'Joe',
age
: 30,
}, {
name
: 'Jenny',
age
: 22,
}] const
objSorted
=
useSorted
(
objArr
, (
a
,
b
) =>
a
.
age
-
b
.
age
)

脏模式

脏模式会改变源数组。

ts
const 
source
=
ref
([10, 3, 5, 7, 2, 1, 8, 6, 9, 4])
const
sorted
= useSorted(
source
, (
a
,
b
) =>
a
-
b
, {
dirty
: true,
})
console
.
log
(
source
)// output: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

类型声明

ts
export type 
UseSortedCompareFn
<
T
= any> = (
a
:
T
,
b
:
T
) => number
export type
UseSortedFn
<
T
= any> = (
arr
:
T
[],
compareFn
:
UseSortedCompareFn
<
T
>,
) =>
T
[]
export interface
UseSortedOptions
<
T
= any> {
/** * sort algorithm */
sortFn
?:
UseSortedFn
<
T
>
/** * compare function */
compareFn
?:
UseSortedCompareFn
<
T
>
/** * change the value of the source array * @default false */
dirty
?: boolean
} /** * reactive sort array * * @see https://vueuse.org.cn/useSorted */ export declare function
useSorted
<
T
= any>(
source
:
MaybeRefOrGetter
<
T
[]>,
compareFn
?:
UseSortedCompareFn
<
T
>,
):
Ref
<
T
[]>
export declare function
useSorted
<
T
= any>(
source
:
MaybeRefOrGetter
<
T
[]>,
options
?:
UseSortedOptions
<
T
>,
):
Ref
<
T
[]>
export declare function
useSorted
<
T
= any>(
source
:
MaybeRefOrGetter
<
T
[]>,
compareFn
?:
UseSortedCompareFn
<
T
>,
options
?:
Omit
<
UseSortedOptions
<
T
>, "compareFn">,
):
Ref
<
T
[]>

来源

源码示例文档

贡献者

Anthony Fu
Anthony Fu
Robin
IlyaL
Kasper Seweryn
Jelf

更新日志

v12.8.0
7432f - feat(types): 废弃 MaybeRefMaybeRefOrGetter,转而使用 Vue 的原生类型 (#4636)
v12.3.0
59f75 - feat(toValue): 废弃 @vueuse/shared 中的 toValue,转而使用 Vue 的原生函数
0a9ed - feat!: 放弃对 Vue 2 的支持,优化打包并清理 (#4349)
v10.3.0
33a12 - 特性: 接受 getter 函数作为源 (#3249)

根据 MIT 许可证发布。