本文介绍了.sort 函数会改变原始数组吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有那个代码:
arr = arr.sort(function (a, b) {
return a.time>b.time
})
我需要重新定义 arr 还是可以只调用 sort 函数?像这样:
Do I need to redefine arr or it is possible just to call sort function?like this:
arr.sort(function (a, b) {
return a.time>b.time
})
sort 和 filter 函数会改变原来的数组吗?
Will the sort and filter functions change the original array?
推荐答案
使用 slice()
对原始数组的副本进行排序.
Use slice()
to sort a copy of the original array.
var arr =[{time:4},{time:3},{time:6}];
arr.sort(function (a, b) {
return a.time-b.time;
});
将改变原始数组并返回:
will mutate the original array andreturns :
[ { time: 3 }, { time: 4 }, { time: 6 } ]
和 console.log(arr) 返回
and console.log(arr) returns
[ { 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) 返回
console.log(arr) returns
[ { time: 4 }, { time: 3 }, { time: 6 } ]
这篇关于.sort 函数会改变原始数组吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!