iT邦幫忙

0

JS_Array.sort排序字串的問題

  • 分享至 

  • twitterImage

在一本書上的範例中,實作以下內容,卻沒有書中的結果,大家可以幫忙看看哪邊有問題嗎?

var arr2 = [{name:"Suzanne"},{name:"Jim"},{name:"Trevor"},{name:"Amanda"}];

arr2.sort((a,b)=> a.name > b.name);
console.log( arr2);

不知道為什麼,排序仍然和之原先矩陣相同?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

3
海綿寶寶
iT邦大神 1 級 ‧ 2021-07-18 19:28:51
最佳解答

不知道為什麼
我的會排序
https://ithelp.ithome.com.tw/upload/images/20210718/200017873hUv7PeWzu.png
https://ithelp.ithome.com.tw/upload/images/20210718/20001787IjlZE3c19F.png

看更多先前的回應...收起先前的回應...
O口O iT邦新手 4 級 ‧ 2021-07-18 22:09:26 檢舉

可以請教你的nodejs版本嗎?
我的是V14.17.3

因為我原來沒看到 Node.js
所以我只用單純的 javascript 測試
才會和你的結果不一樣

試試看這個版本

var arr2 = [{name:"Suzanne"},{name:"Jim"},{name:"Trevor"},{name:"Amanda"}];

arr2.sort(function(a, b) {
    var nameA=a.name.toLowerCase(), nameB=b.name.toLowerCase();
    if (nameA < nameB) //sort string ascending
      return -1;
    if (nameA > nameB)
      return 1;
    return 0; //default return value (no sorting)
   });          

console.log( arr2);
O口O iT邦新手 4 級 ‧ 2021-07-19 09:27:52 檢舉

可以耶...,感謝你.
再請教你原先是用什麼測試呢?

2
japhenchen
iT邦超人 1 級 ‧ 2021-07-19 07:36:58

你的sort沒有回傳值(大於等於則回傳1,反之回傳-1)
你改一下sort的內容

arr2.sort((a,b)=>{
        return a>=b ? 1 : -1 ;
    });
console.log( arr2);
看更多先前的回應...收起先前的回應...
O口O iT邦新手 4 級 ‧ 2021-07-19 09:26:16 檢舉

好像還是不行耶,請問一下您用的環境是如何?
nodejs 的版本?
我的是V14.17.3

應該說.....書有點舊,那種寫法在新版的環境不太能用了

iT邦新手 2 級 ‧ 2021-07-19 12:37:43 檢舉

痾 你是不是直接用這個?

arr2.sort((a, b) => (a >= b ? 1 : -1))

他的意思應該是指:

arr2.sort((a, b) => (a.name > b.name ? 1 : -1))

至少我改到 V14.17.3 測試,是沒問題的。

O口O iT邦新手 4 級 ‧ 2021-07-19 15:45:04 檢舉

可以了,感謝杯^_^

我要發表回答

立即登入回答