javascript - 即使在 Object.keys() 上操作时,array.sort() 是否就位?

标签 javascript arrays sorting javascript-objects in-place

JavaScript 数组的 .sort() 方法就地修改数组并返回对数组的引用。

Object.keys(obj) 获取一个数组,其中包含对象 obj 的所有键。

在 JavaScript 中,对象键在标准中规定为不以任何特定顺序排列。

所以这两个“规则”似乎是冲突的:“array.sort() 就地”与“对象键未排序”。

当我们调用 Object.keys(obj).sort() 时会发生以下哪项?

  • 对象的键已就地排序,如果对象未被修改,则保持排序?
  • 创建并排序对象键数组的临时匿名副本?
  • 还有别的吗?

这是否记录在标准中或是否因实现而异?

最佳答案

答案是第二个:创建并排序对象键数组的临时匿名副本。

ecma spec声明 Object.keys 的结果值每次都必须是数组的新实例。这意味着生成的数组不受对象实际键的支持,它不像 Java 的 keySet。 , 它只是一个副本。

关于javascript - 即使在 Object.keys() 上操作时,array.sort() 是否就位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001687/

相关文章:

javascript - n* 数组中的替代项合并

java - 如何将数字从最小到最大排序 - Java?

javascript - 如何重新启用文本字段?

javascript - 使用 Mocha 在 NodeJS 和 MongoDB 中测试用户模型时没有结果

javascript - React - 在 Map 函数中添加组件不添加

arrays - 在 swift 3.0 中排序

c++ - 快速排序 C++ 实现(使用随机基准)中断并陷入无限循环

c++ - 与三值比较函数相比,仅使用小于运算符进行排序

javascript - 使用 Google Apps 脚本搜索电子表格不返回任何数据

javascript - Jquery 数据表插件不起作用