Mic*_*tly 15 javascript browser
我正在解决 LeetCode 问题,我想将一个变量分配给数组的排序副本。
sortedHeights = heights.toSorted()
Run Code Online (Sandbox Code Playgroud)
但是,这会返回以下错误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']
Run Code Online (Sandbox Code Playgroud)
我尝试在 WebStorm 上运行此代码片段,但出现了相同的错误,但是,当我在浏览器中运行它时,它可以工作。这是为什么?
小智 26
在回答这个问题时,Array.prototype.toSorted()Node.js 版本 20+ 支持。大多数开发人员使用 Node.js LTS 版本(当前版本 18)。因此,如果您在 WebStorm 中使用 Node.js 版本 19、18 或更低版本,.toSorted()则不支持。
对于 LeetCode 的情况,我发现它当前使用 Node.js 16来运行您的代码。因此,您可能想暂时诉诸此替代(且实际上等效)代码:
sortedHeights = [...heights].sort()
Run Code Online (Sandbox Code Playgroud)
另请注意,.toSorted()当前在最新版本的 Chrome 和 Edge(从版本 110 开始)、Safari(从版本 16 开始)、Firefox(从版本 115 开始)和其他一些浏览器中受支持,旧版本不支持 - 以防万一您做出假设它适用于所有浏览器。
检查Array.prototype.toSorted() MDN 浏览器兼容性部分以获取最新的支持详细信息。