我正在学习排序方法,并想知道它是如何工作的。
说我们有一个像这样的对象数组:
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()方法中,接受一个回调函数,它将数组中包含的2个对象作为参数(我们称之为a和b )。
我的查询是回调函数如何知道从列表数组属性中分配给参数的值。例如,a.colour = white和b.colour = red,然后移动到下一个值,因为我们没有使用任何类型的循环来迭代列表?
谢谢Jag
发布于 2020-06-25 00:17:43
Array.sort函数自己进行迭代..。A和b参数是整个Array中的任意两个对象。正如您所指出的,JS并不真正知道如何将一个对象与另一个object...so进行比较,您可以使用比较函数提供详细信息,并且排序将使用该比较函数来比较数组中的对象对,并酌情交换它们的顺序。请注意排序会改变原始数组..。它不返回排序的副本。
发布于 2020-06-25 00:55:09
回调不知道。
它被选择值对的排序算法所使用。
排序算法在遍历数组时会查看成对的值。
该算法依赖于回调来告诉它a相对于b的位置。
a在b的左边吗?在b的右边?或者他们的位置是可以互换的,因为他们的价值是一样的
排序算法可以传递与a相同的原始值,另一次传递与b相同的原始值。
https://stackoverflow.com/questions/62565903
复制相似问题