簡體   English   中英

使用字符串值對對象數組進行排序 - javascript

[英]Sort an array of objects with string value - javascript

我正在學習排序方法並想知道它是如何工作的。

假設我們有一個這樣的對象數組:

const list =
  [ { color: ‘white’, size: ‘XXL’ }
  , { color: ‘red’,   size: ‘XL’  }
  , { color: ‘black’, size: ‘M’   }
  ]

要對此進行排序,我們可以使用如下排序方法:

list.sort((a, b) =>
  (a.color > b.color) 
  ? 1 
  : (a.color === b.color) 
    ? ((a.size > b.size) 
      ? 1 
      : -1) 
    : -1 )

在上面的 Array 的 sort() 方法中,接受了一個回調 function,該回調將數組中包含的 2 個對象(我們稱為 a 和 b )作為參數。

我的查詢是回調 function 如何知道列表數組屬性中的哪個值分配給參數。 例如 a.colour = white 和 b.colour = red 然后移動到下一個值,因為我們沒有使用任何類型的循環來迭代列表?

謝謝賈格

Array.sort function 進行自己的迭代... a 和 b 參數是整個數組中的任意兩個對象。 As you point out, JS doesn't REALLY know how to compare an object to another object...so you provide that detail with the compare function and the sort will use that compare function to compare pairs of objects in the Array and swap their酌情訂購。 請注意,排序會更改原始數組……它不會返回排序后的副本。

回調不知道。

它由選擇值對的排序算法使用。

排序算法在遍歷數組時查看成對的值。

該算法依靠回調告訴它a應該相對於b的位置。

ab的左邊嗎? b的右邊? 或者它們的位置是否可以互換,因為它們具有相同的值

排序算法可能將相同的原始值一次作為a傳遞,另一次作為b

暫無
暫無

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

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