مرتبسازی براساس حوزه
اهمیت: 5
ما یک ارایه از شیءها را برای مرتبسازی دریافت کردهایم:
let
users =
[
{
name
:
"John"
,
age
:
20
,
surname
:
"Johnson"
}
,
{
name
:
"Pete"
,
age
:
18
,
surname
:
"Peterson"
}
,
{
name
:
"Ann"
,
age
:
19
,
surname
:
"Hathaway"
}
]
;
راه معمولی برای انجام آن میتواند این باشد:
// (Ann، John، Pete) براساس اسم
users.
sort
(
(
a,
b
)
=>
a.
name >
b.
name ?
1
:
-
1
)
;
// (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
;
}