首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误对类型记录中的对象数组进行排序,没有正确的顺序(使用.slice()工作)

错误对类型记录中的对象数组进行排序,没有正确的顺序(使用.slice()工作)
EN

Stack Overflow用户
提问于 2020-11-20 19:45:57
回答 1查看 160关注 0票数 1

我有一个具有以下结构的对象数组:

代码语言:javascript
复制
let j=[
         {
            id: "924f8812-8520-41ac-b78b-8b8ea69dc169", 
            FechaHoraConexion: "2020-11-19 13:48:15",
            FechaHoraDesconexion: "2020-12-20 13:48:59"
          },
          {
            id: "e9f9d414-eba6-4af9-8a0f-4e2c9d2e4643", 
            FechaHoraConexion: "2020-11-19 13:50:27",
            FechaHoraDesconexion: "2020-11-19 13:48:15"
          },
          {
            id: "dbdbccf3-a820-49e0-93e6-fc392120cdb2",
            FechaHoraConexion: "2020-11-19 19:50:27",
            FechaHoraDesconexion: "2020-11-20 14:17:32"
           }
        ]
        let ascend=j.slice();
        let auxascend=ascend.sort(function (a, b) {
    if (a.FechaHoraConexion > b.FechaHoraConexion) {
      return 1;
    }
    if (a.FechaHoraConexion < b.FechaHoraConexion) {
      return -1;
    }
    return 0;
  });
  let ascend2=j.slice();
  let auxascend2=ascend2.sort(function (a, b) {
    if (a.FechaHoraDesconexion > b.FechaHoraDesconexion) {
      return 1;
    }
    if (a.FechaHoraDesconexion < b.FechaHoraDesconexion) {
      return -1;
    }
    return 0;
  });
 //THE RESULT IS THE SAME ARRAY WITH THE SAME ORDER BUT THE ASCEND ARRAY ORDER IS INCORRECT       
 console.log(auxascend,auxascend2)

acend2数组是正确的,但是由于任何原因,提升数组等于ascend2数组。原因是什么?谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-20 20:07:37

您需要获取数组的副本,并在没有相同对象引用的情况下对数组进行排序。

代码语言:javascript
复制
const
    sortBy = key => (a, b) => a[key].localeCompare(b[key]),
    array = [{ id: "924f8812-8520-41ac-b78b-8b8ea69dc169", FechaHoraConexion: "2020-11-19 13:48:15", FechaHoraDesconexion: "2020-12-20 13:48:59" }, { id: "e9f9d414-eba6-4af9-8a0f-4e2c9d2e4643", FechaHoraConexion: "2020-11-19 13:50:27", FechaHoraDesconexion: "2020-11-19 13:48:15" }, { id: "dbdbccf3-a820-49e0-93e6-fc392120cdb2", FechaHoraConexion: "2020-11-19 19:50:27", FechaHoraDesconexion: "2020-11-20 14:17:32" }]
    auxascend = [...array].sort(sortBy('FechaHoraConexion'));
    auxascend2 = [...array].sort(sortBy('FechaHoraDesconexion'));
     
console.log(auxascend);
console.log(auxascend2)
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64935934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档