Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象属性在联机代码编辑器中按字母顺序排序_Javascript_Sorting_Object_Properties_Alphabetical - Fatal编程技术网

Javascript 对象属性在联机代码编辑器中按字母顺序排序

Javascript 对象属性在联机代码编辑器中按字母顺序排序,javascript,sorting,object,properties,alphabetical,Javascript,Sorting,Object,Properties,Alphabetical,我创建了一个将所有数值属性相乘的函数。当我在在线代码编辑器JSFIDLE中工作时,菜单对象的属性按字母顺序排列得出奇: let menu = { width: 200, height: 300, title: "My menu" }; let myF = obj => { for(let prop in obj){ if(typeof obj[prop] == "number" ){ obj[prop] *= 2} } } m

我创建了一个将所有数值属性相乘的函数。当我在在线代码编辑器JSFIDLE中工作时,菜单对象的属性按字母顺序排列得出奇:

let menu = {
  width: 200,
  height: 300,
  title: "My menu"
};

let myF = obj => { for(let prop in obj){
if(typeof obj[prop] == "number" ){
obj[prop] *= 2}

}  

}

myF(menu);
console.log(menu);

我只是想知道为什么在线代码编辑器会这样做。另外,在我看来,在处理大量代码行时,此功能很容易误导,在这样的地方编写代码是一种坏习惯吗?

for…in循环以任意顺序迭代对象的属性。您的代码不受顺序的影响。

for…in循环以任意顺序迭代对象的属性。您的代码不受顺序的影响

“for…in循环以任意顺序迭代对象的属性“-从ES2020开始。但是,当我在浏览器控制台中运行此代码时,对象属性按原始顺序排序。@ÖzgürCoşkuner这取决于fiddle使用的是哪个版本的ES,以及浏览器使用的是哪个版本。@str现在为了引擎之间的一致性,顺序可能是确定的,但这并不意味着现在应该将对象用作有序结构。@Bergi我同意,我不是有意暗示。“for…in循环以任意顺序迭代对象的属性”-从ES2020开始。但是,当我在浏览器控制台中运行此代码时,对象属性按原始顺序排序。@ÖzgürCoşkuner这取决于ES、fiddle使用的版本以及浏览器使用的版本。@str现在为了引擎之间的一致性,顺序可能是确定的,但这并不意味着现在应该将对象用作有序结构。@Bergi我同意,我不是有意暗示。你是说它们在源代码中被重新排序了吗?您可能按下了“Format code”(格式化代码)按钮,所选的格式化程序具有按字母顺序对简单对象进行排序的设置。不,它不会影响源代码。当我运行console.log(菜单)以查看最后的输出时,它只是在JSFIDLE和codepen的控制台中重新排序对象的属性。我不与这些格式按钮进行交互@好的。对象不是一个有序的数据结构,它们的打印顺序应该无关紧要。如果您想依赖迭代顺序,请使用
Map
。您是说它们在源代码中被重新排序了吗?您可能按下了“Format code”(格式化代码)按钮,所选的格式化程序具有按字母顺序对简单对象进行排序的设置。不,它不会影响源代码。当我运行console.log(菜单)以查看最后的输出时,它只是在JSFIDLE和codepen的控制台中重新排序对象的属性。我不与这些格式按钮进行交互@好的。对象不是一个有序的数据结构,它们的打印顺序应该无关紧要。如果您想依赖迭代顺序,请使用
映射
{
  height: 600,
  title: "My menu",
  width: 400
}