按字段排序
重要性:5
我们有一个要排序的对象数组
let
users =
[
{
name:
"John"
,
age:
20
,
surname:
"Johnson"
}
,
{
name:
"Pete"
,
age:
18
,
surname:
"Peterson"
}
,
{
name:
"Ann"
,
age:
19
,
surname:
"Hathaway"
}
]
;
通常的做法是
// by name (Ann, John, Pete)
users.
sort
(
(
a,
b
)
=>
a.
name >
b.
name ?
1
:
-
1
)
;
// by age (Pete, Ann, John)
users.
sort
(
(
a,
b
)
=>
a.
age >
b.
age ?
1
:
-
1
)
;
我们能把它写得更简洁吗,比如这样?
users.
sort
(
byField
(
'name'
)
)
;
users.
sort
(
byField
(
'age'
)
)
;
所以,不用写函数,直接写 byField(fieldName)
。
编写函数 byField
,它可以用于此目的。
function
byField
(
fieldName
)
{
return
(
a,
b
)
=>
a[
fieldName]
>
b[
fieldName]
?
1
:
-
1
;
}