我在
PHP中构建了一个对象,使用了JSON_encode函数并通过ajax将其作为JSON字符串发送到我的JS脚本.然后我将它转换回一个对象.我遇到的问题是我想按照最初创建的顺序保留对象.请将这个对象看成是什么,一旦我进入JS,请看这个图片:
当我创建对象时,它按字母顺序按客户字段排序.以A开头的客户名称将首先出现,B秒等等.正如您所看到的,现在,对象的第一个元素是以S开头的客户.看起来它以某种方式按照顶层的键自动排序对象,这是一个整数,所以我理解为什么会这样.
所以我想做的是重新排序这个对象,以便按字母顺序按客户字段对所有子对象进行排序.这可能吗?如果是这样,我该怎么办?
谢谢!
解决方法
这可能是
JavaScript对象和JavaScript数组之间的区别.对象更像是哈希表,其中键没有按任何特定顺序排序,而数组是值的线性集合.
在后端,确保编码数组而不是对象.检查最终编码的JSON,如果您的对象集合被{}而不是[]包围,则它被编码为对象而不是数组.
您可能会遇到问题,因为看起来您正试图通过ID号访问对象,而这是您希望这些对象在最终数组中占用的索引,这会带来另一个问题,因为您可能不想要当您只存储少量值时,包含40,000个条目的数组.
如果您只想迭代对象,则应确保编码数组而不是对象.如果要按特定ID访问对象,则可能必须对客户端对象进行排序(即从JSON响应中获取对象,然后创建另一个数组并将这些对象排序到其中,这样您就可以已排序的对象仍然可以通过id)访问它们.
您可以通过Google轻松找到有效的排序算法(或使用以下ELCas中的算法).