首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用字符串值- javascript对对象数组进行排序。

使用字符串值- javascript对对象数组进行排序。
EN

Stack Overflow用户
提问于 2020-06-25 00:06:57
回答 2查看 92关注 0票数 0

我正在学习排序方法,并想知道它是如何工作的。

说我们有一个像这样的对象数组:

代码语言:javascript
复制
const list =
  [ { color: ‘white’, size: ‘XXL’ }
  , { color: ‘red’,   size: ‘XL’  }
  , { color: ‘black’, size: ‘M’   }
  ]

要对此进行排序,我们可以使用以下排序方法:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-25 00:17:43

Array.sort函数自己进行迭代..。A和b参数是整个Array中的任意两个对象。正如您所指出的,JS并不真正知道如何将一个对象与另一个object...so进行比较,您可以使用比较函数提供详细信息,并且排序将使用该比较函数来比较数组中的对象对,并酌情交换它们的顺序。请注意排序会改变原始数组..。它不返回排序的副本。

票数 1
EN

Stack Overflow用户

发布于 2020-06-25 00:55:09

回调不知道。

它被选择值对的排序算法所使用。

排序算法在遍历数组时会查看成对的值。

该算法依赖于回调来告诉它a相对于b的位置。

ab的左边吗?在b的右边?或者他们的位置是可以互换的,因为他们的价值是一样的

排序算法可以传递与a相同的原始值,另一次传递与b相同的原始值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62565903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档