我不明白这个用户数组是如何使用排序函数排序的

问题描述 投票:0回答:1

有一个名为 users 的数组,其中包含不同人的个人信息的对象。 有一个名为 getDatesfromString 的函数,它将字符串剥离为日期格式。 有一个名为sorted_user 的变量,它包含排序后的用户数组。 我不明白的是,排序函数如何通过获取用户的出生日期对用户进行排序,我需要详细解释吗?

let users = [
    {
        firstName: "John",
        lastName: "wick",
        email:"[email protected]",
        DOB:"22-01-1990",
    },
    {
        firstName: "John",
        lastName: "smith",
        email:"[email protected]",
        DOB:"21-07-1983",
    },
    {
        firstName: "Joyal",
        lastName: "white",
        email:"[email protected]",
        DOB:"21-03-1989",
    },
];

function getDateFromString(strDate) {
    let [dd,mm,yyyy] = strDate.split('-')
    return new Date(yyyy+"/"+mm+"/"+dd);
}
    
// console.log(sorted_users);
    let sorted_users=users.sort(function(a, b) {
        let d1 = getDateFromString(a.DOB);
        let d2 = getDateFromString(b.DOB);
            return d1-d2;
          });
    console.log(sorted_users);

javascript arrays function sorting
1个回答
0
投票

sort
函数根据出生日期(
users
)组织
DOB
数组。详细解释如下:

  1. 比较功能:

    • sort
      函数使用一个函数一次比较两个用户。
    • 该函数将生日字符串转换为日期对象以进行精确比较。
  2. 日期比较:

    • 对于每一对用户,它会从另一个用户中减去一个出生日期。
    • 如果结果为负数,则说明第一个用户出生较早。
    • 如果是肯定的,则第一个用户稍后出生。
    • 如果为零,则它们的顺序保持不变。
  3. 排序:

    • sort
      功能根据比较结果重新排列用户。
    • 排序后,数组按照出生日期升序排列。
© www.soinside.com 2019 - 2024. All rights reserved.