.sort函数是否会更改原始数组? [英] Does .sort function change original array?
本文介绍了.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
})
排序和过滤函数会改变原始数组吗?
Will the sort and filter functions change the original array?
推荐答案
使用 slice()
对副本进行排序原始数组。
var arr =[{time:4},{time:3},{time:6}];
arr.sort(function (a, b) {
return a.time-b.time;
});
将改变原始数组并返回
:
will mutate the original array and returns :
[{time:3},{time:4},{time:6}]
[ { time: 3 }, { time: 4 }, { time: 6 } ]
和console.log(arr)返回
and console.log(arr) returns
[{time:3},{time:4},{time :6}]
[ { 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}]
[ { time: 3 }, { time: 4 }, { time: 6 } ]
但不会影响原作数组。
console.log(arr)返回
console.log(arr) returns
[{时间: 4},{时间:3},{时间:6}]
[ { time: 4 }, { time: 3 }, { time: 6 } ]
这篇关于.sort函数是否会更改原始数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文