繁体   English   中英

如何对数组进行升序和降序排序?

[英]How to sort an array ascending and descending?

 let setOfNumbers =[5,2,8,1,9]; const orderedNumbers = arr => { if(arr instanceof Array === false) return console.warn('El dato ingresado no es correcto'); if(arr.length === 0) return console.warn('El array debe contener al menos un numero'); for(let num of arr){ if(typeof num !== 'number') return console.warn('El array debe contener solo numeros'); } let descendingNum = arr.sort(function(a, b){ return b - a;}); console.log(descendingNum); let ascendingNum = arr.sort(function(a, b){ return a - b;}); console.log(ascendingNum); let objOrderedNum = { descendingNum, ascendingNum } return console.log(objOrderedNum); } orderedNumbers(setOfNumbers);

嗨,我需要在 JavaScript 中执行一个函数,该函数返回一个对象,其中包含两个数组,其中包含用户输入的数组编号,按降序和升序排序。 在第一个console.log()工作正常,但在最终对象中它不起作用。

在javascript中sort就地sort 你需要复制一份[...arr]

sort 会改变数组,所以当你一次又一次地对它进行排序时,它会改变。 所以你必须制作一个副本。

 var a = [1,4,6,8,3]; a.sort(); var b = a.slice().reverse(); // [...a].reverse(); console.log({ a, b });

您需要创建原始数组的副本。 根据您的代码,更新了工作代码。

let setOfNumbers =[5,2,8,1,9];

const orderedNumbers = arr => {
    let arr1 = [...arr];
    if(arr instanceof Array === false) return console.warn('El dato ingresado no es correcto');
    
    if(arr.length === 0) return console.warn('El array debe contener al menos un numero');
    
    for(let num of arr){
        if(typeof num !== 'number') return console.warn('El array debe contener solo numeros');
    }
   
    let descendingNum = arr.sort(function(a, b){
        return b - a;}); 
        console.log(descendingNum);
    
    let ascendingNum = arr1.sort(function(a, b){
        return a - b;});  
        console.log(ascendingNum);
    
    
    let objOrderedNum = {
        descendingNum, 
        ascendingNum 
    }
    return console.log(objOrderedNum);

}

orderedNumbers(setOfNumbers);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM