javascript - .sort 函数是否会更改原始数组?

标签 javascript arrays sorting

我有那个代码:

arr = arr.sort(function (a, b) {
    return a.time>b.time
})

我需要重新定义 arr 还是可以只调用 sort 函数? 像这样:

arr.sort(function (a, b) {
    return a.time>b.time
})

排序和过滤函数会改变原始数组吗?

最佳答案

使用 slice() 对原始数组的副本 进行排序。

var arr =[{time:4},{time:3},{time:6}];

arr.sort(function (a, b) {
  return a.time-b.time;
});

将改变原始数组并且 返回:

[ { time: 3 }, { time: 4 }, { time: 6 } ]

console.log(arr) 返回

[ { time: 3 }, { time: 4 }, { time: 6 } ]

但是

var arr =[{time:4},{time:3},{time:6}];
arr.slice().sort(function (a, b) {
  return a.time-b.time;
});

返回

[ { time: 3 }, { time: 4 }, { time: 6 } ]

但不会影响原数组。

console.log(arr) 返回

[ { time: 4 }, { time: 3 }, { time: 6 } ]

关于javascript - .sort 函数是否会更改原始数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24074968/

相关文章:

Java:局部变量可能尚未初始化?

javascript - 如果两个数组具有相同的ownerId,如何比较它们

linux - 按数字和增量对文件进行排序

javascript - Angular/JS : How do I pass a scope variable to a javascript function?

javascript - 为什么阴影在 Three.js 中变得模糊

c - 从数组中获取最大排序子数组的算法

javascript - 按特定顺序对数组进行排序

mysql - ORDER BY 不按字母顺序排序

javascript - Safari 和 Chrome 上的 window.location.href

javascript - 我正在尝试为小屏幕提供响应式导航栏,如何将左侧链接更改为 css 下拉菜单?