第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Javascript 排序函數(shù)不排序

Javascript 排序函數(shù)不排序

心有法竹 2023-03-18 15:05:51
我正在使用 Javascript 排序?qū)ο髷?shù)組進(jìn)行排序。這就是我嘗試做的原因(選出我陣中的 10 名最佳球員):      this.topPlayers .sort(function(a, b) {        return a.stars > b.stars;      });      this.topPlayers = this.topPlayers.slice(0,10);當(dāng)我這樣做時(shí),它返回同樣的東西(10 個(gè)最差的玩家):      this.topPlayers .sort(function(a, b) {        return a.stars < b.stars;      });      this.topPlayers = this.topPlayers.slice(0,10);我究竟做錯(cuò)了什么 ?兩種情況下的結(jié)果相同,嘗試對其他屬性進(jìn)行排序,同樣的結(jié)果......我正在使用 angular 并在 ngOnInit() 函數(shù)上執(zhí)行它。
查看完整描述

3 回答

?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊

您的比較函數(shù)返回一個(gè)布爾值。Array.sort() 期望您返回一個(gè)數(shù)字。

如果您的比較函數(shù)返回值 < 0,則“a”將放在“b”之前。

如果您的比較函數(shù)返回值 > 0,則“b”將放在“a”之前。

如果您的比較函數(shù)返回 0,則訂單將保持原樣。

因此,要按降序排列星星的數(shù)量,您可以這樣做:

this.topPlayers.sort((a, b) => b.stars - a.stars);

如果'a'比'b'有更多的星星,返回值將為負(fù),'a'將排在'b'之前,反之亦然。


查看完整回答
反對 回復(fù) 2023-03-18
?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

這是因?yàn)锳rray 的 sort()期望它的函數(shù)返回一個(gè)數(shù)值,而不是你給它的布爾值。負(fù)結(jié)果表示排序較低,0 表示保持原樣,正表示排序較高。

在 ES6 中,使用這樣的東西:

let?top10?=?this.topPlayers
????.sort((a,b)?=>?b.stars?-?a.stars)
????.slice(0,10);
let?bottom10?=?this.topPlayers
????.sort((a,b)?=>?a.stars?-?b.stars)
????.slice(0,10);


查看完整回答
反對 回復(fù) 2023-03-18
?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊

作為參數(shù)Array.prototype.sort,期望一個(gè)返回?cái)?shù)值而不是布爾值的比較函數(shù)。

這個(gè)比較函數(shù)需要遵循這個(gè)邏輯:

function compare(a, b) {

? if (a is less than b by some ordering criterion) {

? ? return -1; // or any value smaller than zero

? }

? if (a is greater than b by the ordering criterion) {

? ? return 1; // or any value greater than zero

? }

? // a must be equal to b

? return 0;

}

在您的情況下,如果stars是一個(gè)數(shù)字,您可以按以下方式按降序?qū)?shù)組進(jìn)行排序:


this.topPlayers.sort(function(a, b) {

? return b.stars - a.stars;

});

對于升序,您只需要 returna.stars - b.stars即可。


查看完整回答
反對 回復(fù) 2023-03-18
  • 3 回答
  • 0 關(guān)注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號