簡體   English   中英

按嵌套數組中的第一個元素對數組進行排序

[英]Sort an array of arrays by the first elements in the nested arrays

這是一個非常難以置信的基本問題,我可以在幾秒鍾內用Python完成-但是我是Java語言的新手,也許我只是不知道該語言的名稱,但是我的研究尚未完全回答。

我正在進行API調用; 作為回應,我得到了:

let unordered_ranges = [[
    [1461913200000, 57, 69],
    [1380006000000, 75, 79],
    [1321344000000, 78, 79],
    [1276585200000, 69, 75],
    [1252998000000, 68, 76],
    [1234512000000, 79, 81],
    [1423814400000, 77, 78],
    [1489820400000, 69, 79]
]];

嵌套數組中的第一個元素是以毫秒為單位的時間戳。 如何使用嵌套時間戳按時間順序對父數組排序?

到目前為止,我已經:

let ranges= unordered_ranges.sort(function (a, b) {
    return a > b
});

我知道.sort()是字典式的; 所以我需要傳遞自己的函數來對其進行排序; 但是此功能不能完全做到這一點。

您將要訪問第一個數組條目(因為只有一個),然后使用每個條目的第一個數組項使用標准數字比較器訪問Array.prototype.sort()

 let unordered_ranges = [[ [1461913200000, 57, 69], [1380006000000, 75, 79], [1321344000000, 78, 79], [1276585200000, 69, 75], [1252998000000, 68, 76], [1234512000000, 79, 81], [1423814400000, 77, 78], [1489820400000, 69, 79] ]]; let ranges = unordered_ranges[0].sort((a, b) => a[0] - b[0]) console.info(ranges) 


為了解釋比較器,最好閱讀文檔...

如果提供compareFunction,則根據比較函數的返回值對數組元素進行排序。 如果ab是要比較的兩個元素,則:

  • 如果compareFunction(a, b)小於0,則將compareFunction(a, b)排序a小於b的索引,即a在前。
  • 如果compareFunction(a, b)返回0,則ab彼此相對不變,但對所有不同元素進行排序。 注意:ECMAscript標准不保證此行為,因此並非所有瀏覽器(例如,至少可追溯到2003年的Mozilla版本)都遵守此規定。
  • 如果compareFunction(a, b)是大於0,排序b到低於一個索引a ,即, b至上。
  • 當給定一對特定的元素ab作為其兩個參數時compareFunction(a, b)必須始終返回相同的值。 如果返回不一致的結果,則排序順序不確定。

暫無
暫無

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

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