【问题标题】:JavaScript formal criteria definition of array comparison数组比较的JavaScript形式标准定义
【发布时间】:2019-02-02 11:09:55
【问题描述】:

今天在 JS 上做任务,我发现开箱即用的 JavaScript 具有强大的数组比较功能:

console.log(["a","b"] > ["a","aa"] && ['a','aa'] < ['a', 'cc']) // true

这导致二维数组的字符串快捷排序

console.log([["a","aa"],['b','bb'],["a","c"],['b',"ab"],['b',"a"]].sort())
/*
[ [ 'a', 'aa' ],
  [ 'a', 'c' ],
  [ 'b', 'a' ],
  [ 'b', 'ab' ],
  [ 'b', 'bb' ] ]*/

JavaScript 自动对具有相似第一个元素的子数组进行排序。 现在我正在寻找正式定义 JavaScript 如何比较两个数组。

【问题讨论】:

标签: javascript arrays


【解决方案1】:

通过取Array#sort,你得到以下Description来使用参数compareFunction

如果未提供compareFunction,则所有未定义的数组元素将通过将它们转换为字符串并以UTF-16 代码单元顺序比较字符串来进行排序。例如,“香蕉”出现在“樱桃”之前。在数字排序中,9 在 80 之前,但由于数字被转换为字符串,因此在 Unicode 顺序中“80”在“9”之前。所有undefined 元素都排序到数组的末尾。

结果是一个看起来像排序的数组,至少对于第一个元素,除非元素包含逗号。

【讨论】:

    【解决方案2】:

    sort() 方法对数组的元素进行就地排序并返回该数组。默认排序顺序是将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列。

    Array.prototype.sort()

    【讨论】:

      猜你喜欢
      • 2013-05-11
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多