繁体   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