亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

JavaScript Sort 的一個錯誤用法示例

2024-05-06 16:17:18
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JavaScript Sort 的一個錯誤用法示例,本文分析了一個Sort實例得到了這個錯誤用法并給出了解決方法,需要的朋友可以參考下
 

前不久同事的代碼中出了一個很神奇的問題,大致流程是對一個由對象組成的數組進行排序,其中屬性 a 用于排序,屬性 b 作為一個優選條件,當 b 等于 1 的時候無論 a 值是什么,都排在開頭 。這本是一個很簡單的問題,問題就在于他用兩次 sort 實現在這次排序,先根據 a 的屬性排序,然后再根據 b 的值來排序。問題就出在第二次排序中。

我們想當然的會認為在第一次排序中,數組已經根據 a 的屬性由大到小排序,在第二次中我們只要不去動原數組的順序就行(一般在方法中寫成返回0或-1),只考慮單獨把 b 等于 1 的元素提到前面去。但是其實這與語言所選用的排序算法有關,javascript (和一起其他語言)內置的 sort 方法采用的是幾種排序算法的集合,有時并不能保證相同元素的位置保持一致。

下面是從 stackoverflow 上面找來的一個例子

 

復制代碼代碼如下:

var arrayToSort = [
  {name: 'a', strength: 1}, {name: 'b', strength: 1}, {name: 'c', strength: 1}, {name: 'd', strength: 1},
  {name: 'e', strength: 1}, {name: 'f', strength: 1}, {name: 'g', strength: 1}, {name: 'h', strength: 1},
  {name: 'i', strength: 1}, {name: 'j', strength: 1}, {name: 'k', strength: 1}, {name: 'l', strength: 1},
  {name: 'm', strength: 1}, {name: 'n', strength: 1}, {name: 'o', strength: 1}, {name: 'p', strength: 1},
  {name: 'q', strength: 1}, {name: 'r', strength: 1}, {name: 's', strength: 1}, {name: 't', strength: 1}
];

 

arrayToSort.sort(function (a, b) {
  return b.strength - a.strength;
});

arrayToSort.forEach(function (element) {
  console.log(element.name);
});

 

我們會以為最后元素的值還是從 a 到 t,但實際運行下來的結果卻是亂序的,這是因為 sort 的算法并沒有保留原數組的順序,也即 unstable。

那么我們就該盡量避免這種情況發生,就我同事的例子,將兩次 sort 的邏輯合并在一次中應該是個可行的辦法,如果必須分為多次 sort,那么就把原數組的順序記錄在元素的屬性上把。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲欧美一区| 欧美激情xxxx性bbbb| 国产视频观看一区| 乱亲女秽乱长久久久| 国产精品黄页免费高清在线观看| 亚洲最新中文字幕| 激情av一区二区| 久久精品青青大伊人av| 国产精品视频公开费视频| 日韩中文有码在线视频| 亚洲xxxx18| 久久久久久久一| 亚洲欧美日本另类| 亚洲人高潮女人毛茸茸| 麻豆乱码国产一区二区三区| 久久精品国产精品| 欧美国产乱视频| 亚洲高清不卡av| 日韩在线播放一区| 97色在线视频| 日本欧美一级片| 91久热免费在线视频| 国产91ⅴ在线精品免费观看| 欧美大秀在线观看| 亚洲欧美日韩在线高清直播| 2019中文字幕在线免费观看| 国产精品久久久久久久午夜| 国产成人精品亚洲精品| 在线免费看av不卡| 欧美成人黑人xx视频免费观看| 在线观看欧美视频| 欧美xxxx做受欧美.88| 色一区av在线| 91免费人成网站在线观看18| 深夜精品寂寞黄网站在线观看| 亚洲第一区第二区| 欧美日韩亚洲系列| 久久久久久久久国产精品| 久久精品视频99| 日韩精品欧美激情| 久久成人综合视频| 久久精品久久精品亚洲人| 亚洲qvod图片区电影| 7m精品福利视频导航| 久久精品最新地址| 欧美香蕉大胸在线视频观看| 26uuu另类亚洲欧美日本老年| 伦伦影院午夜日韩欧美限制| 国产亚洲欧美日韩一区二区| 亚洲一区二区三区香蕉| 高跟丝袜欧美一区| 欧美激情视频免费观看| 亚洲天堂av综合网| 日韩激情av在线免费观看| 久热精品视频在线免费观看| 成人黄色av播放免费| 久久久在线视频| 国产欧美婷婷中文| 国产在线观看一区二区三区| 91精品免费久久久久久久久| 亚洲精品中文字幕av| 久久久免费高清电视剧观看| 亚洲男人天堂2023| 久久久久久久亚洲精品| 国产日韩视频在线观看| 久久久女人电视剧免费播放下载| 精品一区二区电影| 91久久在线播放| 久久在精品线影院精品国产| 成人精品福利视频| 在线精品国产欧美| 日韩第一页在线| 国产香蕉一区二区三区在线视频| 日韩欧美主播在线| 欧美日韩成人在线视频| 国产视频久久网| 亚洲伊人久久大香线蕉av| 国产精品视频精品| 精品一区二区三区四区在线| 国产欧美日韩中文字幕在线| 欧美第一黄网免费网站| 亚洲国产精品久久| 欧美在线性视频| 欧美视频在线观看免费| 久久久久久有精品国产| 高清欧美性猛交xxxx黑人猛交| 亚洲va欧美va国产综合久久| 国产成人高潮免费观看精品| 亚洲第一级黄色片| 国产精品丝袜久久久久久不卡| 日韩免费电影在线观看| 亚洲精品免费一区二区三区| 午夜精品久久久久久久99黑人| 激情成人中文字幕| 午夜剧场成人观在线视频免费观看| 成人做爰www免费看视频网站| 欧美性猛交视频| 成人激情视频在线播放| 国色天香2019中文字幕在线观看| 亚洲福利影片在线| 欧美久久精品午夜青青大伊人| 欧美区在线播放| 夜夜躁日日躁狠狠久久88av| 日本不卡高字幕在线2019| 91精品久久久久久久久久| 91精品视频免费| 在线观看欧美日韩| 欧美精品精品精品精品免费| 亚洲免费av网址| 久久精品电影一区二区| 热久久免费视频精品| 亚洲第一福利网站| 欧美激情精品久久久| 久久国产精品久久精品| 美女福利精品视频| 欧美精品激情在线观看| 精品女同一区二区三区在线播放| 欧美激情在线狂野欧美精品| 国产一区二区三区免费视频| 欧美性黄网官网| 欧美孕妇孕交黑巨大网站| 日韩精品高清在线观看| 亚洲电影免费观看高清完整版在线观看| 91国产美女视频| 国产成人精品视频| 日本高清视频精品| 欧美日韩999| 国产成人精品国内自产拍免费看| 欧美大片欧美激情性色a∨久久| 久久av资源网站| 久久久国产一区二区| 亚洲a∨日韩av高清在线观看| 欧美在线视频免费观看| 欧美性极品少妇精品网站| 青青草一区二区| 国产成人精品在线视频| 国产成人极品视频| 日韩美女视频在线观看| 亚洲影院色无极综合| 超薄丝袜一区二区| 欧洲亚洲女同hd| 国产区亚洲区欧美区| 亚洲国产精品嫩草影院久久| 在线电影欧美日韩一区二区私密| 精品国产一区二区三区久久狼黑人| 亚洲国产精品热久久| 国产精品久久久av| 免费成人高清视频| 国产香蕉一区二区三区在线视频| 青草青草久热精品视频在线观看| 日韩精品在线观看一区二区| 91最新在线免费观看| 国产欧美日韩中文| 欧美一区二区三区免费观看| 日韩中文在线中文网在线观看| 欧美激情视频网址| 亚洲天堂av在线播放| 国产精品极品美女在线观看免费| www.国产一区| 亚洲精品国产福利| 亚洲日本中文字幕免费在线不卡| 成人中文字幕在线观看| 91精品国产自产91精品| 亚洲缚视频在线观看|