我正在处理 LeetCode 问题,我想将一个变量分配给数组的排序副本。
sortedHeights = heights.toSorted()
但是,这会返回以下错误
heights.toSorted is not a function
。
我在MDN上查找了这个问题,发现了以下代码片段:
const months = ["Mar", "Jan", "Feb", "Dec"];
const sortedMonths = months.toSorted();
console.log(sortedMonths); // ['Dec', 'Feb', 'Jan', 'Mar']
console.log(months); // ['Mar', 'Jan', 'Feb', 'Dec']
我也尝试在 WebStorm 上运行此代码片段,但我遇到了同样的错误,但是,当我在浏览器中运行它时,它可以正常工作。这是为什么?
.toSorted()
是一种新方法。正如您在链接的 MDN 文档中看到的那样,node.js 还不支持它。
首先,重要的是要注意,对数组进行排序涉及根据某些条件以特定顺序排列其元素。在这种情况下,条件是字母的索引,其中每个字母都被赋予一个数值,例如 A 被赋予值 1,B 被赋予值 2。
要实现这种排序,您可以使用一个名为
toSorted()
的函数,它根据索引排列数组元素。给定输入数组的预期输出为:
[ "Dec", "Feb", "Jan", "Mar"]
为此,您可以使用常量数组 months,其中包含一年中所有十二个月的名称。通过这样做,您可以访问数组中每个月的索引,使您能够根据所需的条件对数组进行排序。
const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];