Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对两个数组进行排序?_Javascript - Fatal编程技术网

Javascript 如何对两个数组进行排序?

Javascript 如何对两个数组进行排序?,javascript,Javascript,请帮助我将2个数组asc排序和desc排序。我的解决方案没有奏效 function solve(arr){ var descArr = []; var ascArr = []; ascArr = arr.sort(function(a, b) { return a - b; }); descArr = arr.sort(function(a, b) { return b - a; }); console.log(descArr); conso

请帮助我将2个数组asc排序和desc排序。我的解决方案没有奏效

function solve(arr){
  var descArr = [];
  var ascArr = [];

  ascArr = arr.sort(function(a, b) {
    return a - b;
  });

  descArr = arr.sort(function(a, b) {
    return b - a;
  });

  console.log(descArr);
  console.log(ascArr);

};

solve([15,11,10,7,12])
Console.log显示类似的排序数组


若要获取
descArr
,请切片以获取数组的浅层副本,然后进行排序。切片
descArr
和数组#反转以获得
ascArr

您需要使用Array#slice来获得浅层克隆,因为Array#sort和Array#reverse都已就位,这意味着它们会对原始数组进行变异

函数求解(arr){
var descArr=arr.slice().sort(函数(a,b){
返回a-b;
});
var ascArr=descArr.slice().reverse();
控制台日志(descArr);
控制台日志(ascArr);
};

solve([15,11,10,7,12])
sort返回排序后的原始数组,这样您就有了对同一数组的所有引用。您可以使用slice创建一个副本,然后进行排序。sort方法会改变您调用它的数组,这就是它们相同的原因。如果在第二次排序之前记录数组,您将看到所需的结果。排序变异原始数组,您必须对原始数组进行切片以创建副本,然后执行变异。`var arr=[15,11,10,7,12];设sortA=arr.slice().sort((a,b)=>a-b);让sortB=arr.slice().sort((a,b)=>b-a);控制台日志(sortA);console.log(sortB)`