[英]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.