簡體   English   中英

如何對數組中的偶數升序和奇數降序進行排序?

[英]How to sort even numbers ascending and odd numbers descending in an array?

我不知道如何在偶數右邊按降序對奇數進行排序。 我有點卡在這里,我知道我錯過了一些東西。

我的輸出是這樣的: [2, 4, 6, 8, 10, 1, 3, 5, 7, 9]

應該是這樣的: [2, 4, 6, 8, 10, 9, 7, 5, 3, 1]

 var n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; n.sort(function(a, b) { return a % 2 - b % 2 || b % 2 - a % 2; }); console.log(n); 

一個簡單且非常昂貴的解決方案是構建兩個數組,對它們進行排序,然后將它們連接起來,但是您可以將兩個測試結合起來並按如下方式進行排序:

arr.sort((a,b)=> (a%2-b%2) || (a%2 ? b-a : a-b))

如您所見,分層排序的模式只是

arr.sort(compareA || compareB) 

您可以概括出更多條件。

 let arr = Array.from({length:10}, (_,i)=>i+1) arr.sort((a,b)=> (a%2-b%2) || (a%2 ? ba : ab)) console.log(arr) 

您可以使用filter()獲得不同的偶數和奇數數組,然后對其進行排序和合並,然后使用Spread運算符

 var n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; let odd = n.filter(x => x % 2).sort((a,b) => ba); let even = n.filter(x => !(x % 2) ).sort((a,b) => ab); let res = [...even,...odd] console.log(res); 

您可以過濾幾率和偶數,並對它們進行排序,最后將兩個數組連接在一起。

 let n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; let odds = n.filter((a) => a % 2 !== 0).sort((a, b) => b - a); let even = n.filter((a) => a % 2 === 0).sort((a, b) => a - b); let sorted = even.concat(odds); console.log(sorted); 
 .as-console-wrapper { min-height: 100%; } 

您是否嘗試過將數組拆分為兩個數組(一個為偶數,一個為奇數),然后根據需要對每個數組進行排序,然后使用傳播運算符[... even,... odd]將它們重新組合在一起

var n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var even = n.filter(a => a % 2 == 0).sort();
var odd = n.filter(a => a % 2 != 0).sort().reverse();
var numbers = [...even, ...odd];

您可以將兩個數組分開,並通過傳播運算符合並。

let n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let odd  = n.filter (v => v % 2);
odd.sort((a,b) => b-a);
//console.log(odd)
let even = n.filter (v => !(v % 2));
even.sort((a,b) => a-b);
//console.log(even);

console.log([...even,...odd]);

 var n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; odd = n.filter (v => v % 2); odd.sort((a,b) => ba); //console.log(odd) even = n.filter (v => !(v % 2)); even.sort((a,b) => ab); //console.log(even); console.log([...even,...odd]); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM