函数会改变原始数组吗

函数会改变原始数组吗

本文介绍了.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 函数会改变原始数组吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-24 09:49