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/