首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何停止Chrome和Opera按索引ASC对JSON对象进行排序?

如何停止Chrome和Opera按索引ASC对JSON对象进行排序?
EN

Stack Overflow用户
提问于 2011-02-17 02:44:27
回答 18查看 47.6K关注 0票数 65

我有个问题。

使用ajax,我使用以下命令发送了格式正确的JSON对象:

代码语言:javascript
复制
            $.ajax({
                type: "POST", 
                url: SITE_URL+'/data.php',
                dataType: "json",
                data: { ajax: 1 },
                success: function(data) {
                    console.log(data);
                }
            });

然而,Opera和Chrome虽然接收了相同的对象,但打印出的对象顺序不正确,看起来它们都是按照ID号进行排序,而不是只把它放在一边!

有没有办法停止这种自动排序?

编辑,在发现它是一个按索引号排序后,我认为最好的方法可能是不使用索引来存储object_id,而是存储我想要按其对对象进行排序的id号。

然而,我仍然想知道是否有办法阻止这种排序。

谢谢

Edit2,我想指出的是,我将用一种不同的方式来做这件事,因为我觉得我在用这个方法滥用对象。然而,我仍然想要理解为什么Opera和Chrome认为改变我的对象‘d的顺序是他们的权利:

问题是我试图节省处理能力,假设我们有一个ID的人,

1.约翰,2.弗兰克和3.萨利。然而,这些人中的每一个都有一个高属性集(和其他东西)。1.John.180,2.Frank.220,3.Sally.150。为了节省处理时间,我请求根据人的身高对其结果进行排序,因此我得到了一个包含2、1、3及其其他属性的数组。我对这个数组进行JSON操作,并将其发送到浏览器。

现在FF将保持新的顺序,People1仍然是John,但在For n as person循环中,它们的顺序将被打乱。

如果我不能解决这个问题,我将不得不不在SQL阶段进行排序,并在JS阶段添加额外的循环和排序到数组中,尽管我希望避免浏览器上的更多压力,因为它已经是一个Js繁重的页面。

非常感谢

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2011-02-23 19:07:45

不同的浏览器以不同的方式处理对象,我的错误是尝试使用我构建对象的顺序作为不应该引用的引用。

票数 21
EN

Stack Overflow用户

发布于 2012-09-08 00:15:42

有同样的问题,遵循了dmc的解决方案,但只是在int值前面添加了一个空格,使其成为一个字符串。

使用空格而不是另一个非数字字符的优点是,可以在mySQL搜索子句中直接使用后续的POSTed值,而不必再次删除它。

票数 27
EN

Stack Overflow用户

发布于 2012-09-21 16:32:51

把整数改成字符串对我不起作用(Chrome,jQuery 1.7.1)。因此,为了保持顺序(是的,这是对象滥用),我更改了以下内容:

代码语言:javascript
复制
optionValues0 = {"4321": "option 1", "1234": "option 2"};

到这个

代码语言:javascript
复制
optionValues0 = {"1": {id: "4321", value: "option 1"}, "2": {id: "1234", value: "option 2"}};
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5020699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档