Javascript 为什么push()设置新的排序A-Z?

Javascript 为什么push()设置新的排序A-Z?,javascript,Javascript,我尝试使用push()在另一个数组中推送数组,但push()在另一个数组中被设置为新的排序 如何修复不排序A-Z的新阵列 newdata = []; data = [ { name: "1", data: [31, 40, 28, 51, 42, 109, 100], }, ]; 尝试推送() Console.log(newdata) 这是我想要的: [ { name: "1", data: [31, 40,

我尝试使用push()在另一个数组中推送数组,但push()在另一个数组中被设置为新的排序

如何修复不排序A-Z的新阵列

newdata = [];
data = [
  {
    name: "1",
    data: [31, 40, 28, 51, 42, 109, 100],
  },
];
尝试推送()

Console.log(newdata)

这是我想要的:

[
  {
    name: "1",
    data: [31, 40, 28, 51, 42, 109, 100],
  },
]
实例:

const newdata=[];
常数数据=[
{
名称:“1”,
数据:[31,40,28,51,42,109,100],
},
];
push({…data});

console.log(newdata)对象按插入顺序排序(至少在这种情况下,所有属性名称都是基于字母的字符串,并且没有继承)

如果将所有属性从一个对象复制到另一个对象,则将以相同的顺序获取属性

您可能不应该关心顺序,如果您真的这样做,那么您可能应该使用贴图而不是对象,但是如果您真的想更改顺序,那么您需要显式排序:

const newdata=[];
常数数据=[{
名称:“1”,
数据:[31,40,28,51,42,109,100],
}, ];
const newObject={};
Object.key(数据[0]).sort().forEach(key=>newObject[key]=data[0][key]);
newdata.push(newObject);

console.log(newdata)您所说的它所做的不是它所做的(请参阅我通过复制和粘贴代码添加的可运行示例的结果),并且您所说的它所做的与您所说的希望它做的实际上是相同的。尽管JavaScript对象属性现在确实有顺序,但使用这种顺序几乎总是错误的。但这在您的情况下并不重要,因为
newdata
和您的原始数组都引用同一个对象,所以无论您使用哪个数组获取该对象的引用,属性的顺序都是相同的
?@Iosif-甚至
newdata.push(…data)
,很难说出来。:-)@T.J.克劳德公平点。更新。
[
  {
    data: [31, 40, 28, 51, 42, 109, 100],
    name: "1",
  },
]
[
  {
    name: "1",
    data: [31, 40, 28, 51, 42, 109, 100],
  },
]