亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Javascript 排序會忽略某些對象值,將它們保留在原來的位置

Javascript 排序會忽略某些對象值,將它們保留在原來的位置

尚方寶劍之說 2023-08-10 16:02:05
我有一個場景,我正在對對象數組進行排序,并且需要根據 prop 的值將某些對象準確地維護在它們所在的位置。所以目前我有,簡短地說:const sorted = accounts.sort((a, b) => {    if (a.locked) return;    if (b.locked) return;    return b.price - a.price;}顯然,這并沒有按預期工作 - 雖然它忽略了特定locked情況,但它也忽略了排序比較,因此如果a被鎖定但b需要移動,b也會被忽略而不是正確移動。我想到的唯一其他選擇是標記哪些是locked,然后在排序后將它們移回它們應該在的位置 - 不認為這是理想的,我正在尋找一種更有效的方法來將對象保留locked在其精確位置放置在數組中,同時其他對象在其周圍移動,如果可能的話?
查看完整描述

1 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

我會過濾以收集所有未鎖定的項目,然后對該數組進行排序,然后映射原始數組以將未鎖定的原始項目替換為已排序的未鎖定項目:


const unlocked = accounts.filter(a => !a.locked);

unlocked.sort((a, b) => b.price - a.price);

let i = 0;

const sorted = accounts.map(item => item.locked ? item : unlocked[i++]);


查看完整回答
反對 回復 2023-08-10
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號