我有代码:.sort函数是否改变原始数组?
arr = arr.sort(function (a, b) {
return a.time>b.time
})
我需要重新定义ARR或有可能只是某种通话功能? 这样的:
arr.sort(function (a, b) {
return a.time>b.time
})
将排序和过滤功能,改变原来的数组?
我有代码:.sort函数是否改变原始数组?
arr = arr.sort(function (a, b) {
return a.time>b.time
})
我需要重新定义ARR或有可能只是某种通话功能? 这样的:
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;
});
将变异原数组和 回报:
[{时间:3},{时间:4},{时间:6}]
和控制台。 logging 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;
});
返回
[{时间:3},{时间:4},{时间:6}]
但不会影响原始数组。
console.logging改编回报
[{时间:4},{时间:3},{时间:6}]
对于圣洁所有的东西,人们的厚爱,这是一个体面的问题,让我们正确地回答它:
const a = [1,2,3];
const b = a.sort();
console.log(a === b); // true
有你的答案。
嗯,你试过了吗? –
我试过了,我无法理解它为什么有时无法工作。我的代码存在问题,或者我正在滥用.sort函数。 –
都将工作。因为'sort'改变了数组。但是比较函数将根据(+ n,0,-n)的返回值而不是'boolean'工作。请更换比较器。 – Kamrul