我有那个代码:
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/