首页 > 解决方案 > 困惑的console.log在排序操作之前输出一个排序数组

问题描述

对为什么两个 console.logs 都输出一个排序数组感到困惑。就好像两个 console.log 行都在脚本末尾运行。我期待第一个 console.log 输出未排序的数组!?如果我注释掉排序,则数组在初始控制台输出中显示为未排序。

const notes=[
    {title: '2. My Next Trip', 
     body: 'I would like to go to Spain...'}, 
    {title: '3. Habits to Work On', 
     body: 'Exercise. Eating a bit better'}, 
    {title: '1. Office meditation', 
     body: 'Get a new seat'}
]
 
console.log(`Unsorted Array : `, notes)

notes.sort((a, b)=>{
    if(a.title < b.title) return -1
    else if(a.title > b.title) return 1
    else return 0
})
 
console.log(`Sorted Array : `, notes)

在此处输入图像描述

标签: javascriptarrays

解决方案


无法在 Node.js 中重现。

由于您在浏览器中执行此操作,因此在console.log对象分解器可以处理显示您的对象之前,您可能已经对其进行了排序,因为这些可能会不按顺序发生。

尝试先复制,然后排序:

sorted = [ ...notes ];

notes.sort(...)

推荐阅读