【问题标题】:Position of elements inside object对象内元素的位置
【发布时间】:2014-03-18 12:00:37
【问题描述】:

我有一个像这样构建的对象(我们称之为 myObject)(如果你 console.log 它)

>Object {info1: Object, info2: Object, info3: Object, info4: Object,…}
      >info1: Object
      >info2: Object
      Id: 532
      someParam: true
      >info3: Object
      >info4: Object
      Id_secondary: 222

如果您检查 info1、info2 的内部(主对象内的对象),它们的结构类似于:

Aparameter: "random info"
Cparameter: "something"
LParameter: "other data"
Surname: "Random Surname"
Username: "Name test"

困扰我的是它们是按字母顺序排列的。

例如,如果我遍历这个给定的对象,我可以看到 info1、info2 中的数据(主对象中的对象)不是按字母顺序排列的。 我检查了这个:

for (var k in myObject)
    if (typeof myObject[k] !== 'function') {
        if(k == 'info1' || k == 'info2' || k == 'info3' || k == 'info4'){
            for (var j in myObject[k]){
                if (typeof myObject[k][j] !== 'function' && k == 'info1') {
                     console.log("Key is " + j + ", value is " + myObject[k][j]);
                }
            }
            // HERE this objects' data are in correct order !   
            console.log(myObject[k]);  <------------------------- see this
        }
    }       
}

如何在 myObject 中保留对象内数据的位置?

任何帮助表示赞赏

【问题讨论】:

  • 对象没有顺序。如果您需要订单,则应使用数组。
  • 我认为对象不会保留存储在其中的条目的任何顺序。如果你想要一个有序的数据结构,你必须使用一个列表。如果只是按字母顺序打印/记录对象,请列出属性名称,对其进行排序,然后记录值。
  • 感谢您的评论。不幸的是,我需要这个对象,因为我只是在更新生产环境(对我来说也是不幸的)。所以我必须转换为数组,排序然后转换回对象?啊,没有更简单的方法吗?

标签: javascript arrays sorting object


【解决方案1】:

对象中的键按添加顺序存储。 AFAIK 这是为方便程序员而添加到浏览器的“非官方”功能,我不建议依赖它。

【讨论】:

  • 感谢您的回答。我最终使用了一个数组和另一个用于散列位置 ...
猜你喜欢
  • 1970-01-01
  • 2013-06-16
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多