我有一个具有以下结构的对象数组:
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数组。原因是什么?谢谢你的帮助。
发布于 2020-11-20 20:07:37
您需要获取数组的副本,并在没有相同对象引用的情况下对数组进行排序。
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).as-console-wrapper { max-height: 100% !important; top: 0; }
https://stackoverflow.com/questions/64935934
复制相似问题