Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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_Object - Fatal编程技术网

在JavaScript中对对象进行排序

在JavaScript中对对象进行排序,javascript,object,Javascript,Object,假设我们有两个JavaScript对象,如下所示: object1 = { test: {}, test2: {}, users: {}, colors: {}, dates:{} } object2 = { test2: {}, dates:{}, test: {}, colors: {}, users: {} } 如何将object1的顺序转换为object2 你不能这样做,对象的定义是无序的。 如果需要,请使用数组。JavaScript对象没有顺

假设我们有两个JavaScript对象,如下所示:

object1 = {
  test: {},
  test2: {},
  users: {},
  colors: {},
  dates:{}
}

object2 = {
  test2: {},
  dates:{},
  test: {},
  colors: {},
  users: {}
}

如何将object1的顺序转换为object2

你不能这样做,对象的定义是无序的。

如果需要,请使用数组。

JavaScript对象没有顺序概念。顺序仅适用于数组。此外,没有人使用数字索引访问JavaScript对象。您可以通过属性的名称访问它。你已经知道这个名字了


问题中的两个对象具有相同的属性。由于值为空,两个对象实际上是相同的

Hmm,这主要是一个基本的排序问题,带有特定于JavaScript的扭曲,因为这在许多语言中都是不可能的。我确信这不是最有效的实现,但是假设两个对象共享相同的属性,下面的内容应该可以完成这项工作

var i = 0;
for(var arg in object1) {
    if (object2[arg]) {
        var temp = object2[arg];
        delete object2[arg];
        object2[arg] = temp;
    }
}   

解释一下你尝试了什么。我想我必须同意上面的陈述,虽然这似乎没有什么意义,但我不希望你在运行之前和之后都使用for-in循环来逐步检查object2的属性,它们将以不同的顺序打印。我理解底层对象是以非有序方式实现的;所以这样做不会影响性能,但是如果出于任何原因想要以某种方式打印对象的属性,这可能会很有用。