javascript - 困惑的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)
解决方案
无法在 Node.js 中重现。
由于您在浏览器中执行此操作,因此在console.log
对象分解器可以处理显示您的对象之前,您可能已经对其进行了排序,因为这些可能会不按顺序发生。
尝试先复制,然后排序:
sorted = [ ...notes ];
notes.sort(...)
推荐阅读
- java - Room :参数的类型必须是带有 @Entity 注释的类或它的集合/数组
- php - MSSQL 在 PHP 中的使用
- python - Python:使用生成器打印二维数组
- facebook-graph-api - 无法使用图形 API 将访客帖子发布到 Facebook 页面
- excel - 使用基于另一个条件的现有公式输出覆盖单元格数据
- swift - Swift - Make func type explicit (in protocol)
- c++ - C++,如何比较使用 const 对象和非 const 对象?
- javascript - 在jquery中读取以#开头的id
- angularjs - AngularJS UI-Grid row.entity 嵌套 JSON
- javascript - 使用firebase云函数监听后台变化